лекции программирование / polevoy_cpp_2012_spring_lecture_02
.pdfДоступ к членам
•. – оператор доступа к члену
•-> – оператор разыменования члена структуры (для указателя на экземпляр)
Address myAddress;
Address* pAddress = &myAddress;
myAddress.zip() pAddress->zip() (*pAddress).zip()
18.02.2012 |
cppNewb.ru |
11 |
Управление доступом
•public
–открытые члены, имена доступны везде
•private
–закрытые члены, имена доступны только в
собственных функциях-членах
•protected
–защищенные члены, имена доступны только в собственных функциях и
функциях-членах производных классов
18.02.2012 |
cppNewb.ru |
12 |
Определение класса
class ClassName
{
public:
// открытые методы private:
// закрытые методы private:
// закрытые данные
};
18.02.2012 |
cppNewb.ru |
13 |
Пример (точка)
пример:
class Point
{
public:
// методы private:
int m_x; //< x-координата int m_y; //< y-координата
};
18.02.2012 |
cppNewb.ru |
14 |
Конструктор
•имя функции совпадает с именем класса
•не возвращает значений
•создает экземпляр (инициализирует)
18.02.2012 |
cppNewb.ru |
15 |
Конструктор (пример)
пример:
class Point
{
public:
Point(const int x, const int y);
…
};
18.02.2012 |
cppNewb.ru |
16 |
Инициализация данных
•сконструированный объект д.б. инициализирован
пример:
Point::Point(const int x, const int y)
: m_x(x)
, m_y(y)
{
}
18.02.2012 |
cppNewb.ru |
17 |
Порядок инициализации
•определяется порядком объявления переменных в классе
•не зависит от порядка в списке
инициализации
•инициализируйте переменные в порядке объявления
18.02.2012 |
cppNewb.ru |
18 |
Перегрузка функций
•использование одного имени для операция с разными типами
пример:
int min(const int lhs, const int rhs);
double min(const double lhs, const double rhs);
18.02.2012 |
cppNewb.ru |
19 |
Поиск соответствия (функция)
•точное соответствие типов аргументов
•соответствие после “повышения” интегральных типов (bool→int и т.д.)
•соответствие после стандартных преобразований типов (int→double и т.д.)
•соответствие после пользовательских преобразований типов
•соответствие за счет многоточий в
объявлении функции (…)
18.02.2012 |
cppNewb.ru |
20 |