Укажите способы задания комментариев
2. /* текст коммент. */
89. Опишите синтаксис описания класса. Какой тип могут иметь поля класса? class Name: public A, private B, … { private://можно и без этой метки int a; public: Name(); ~Name(); … protected: … } В общем, сначала указывается имя, потом от кого наследуется, потом уже идёт описание класса.После метки public, protected, private идут соответственно поля/методы с такими же доступами. По умолчанию (без метки) доступ private. Желательно, чтобы у класса был конструктор/деструктор. Поля класса могут вроде иметь любой тип, за исключением себя же и наследников данного класса.
90. Как инициализировать, изменить поля класса, определенные как константные? Константные методы отличаются тем, что не изменяют значений полей своего класса. Пример: class aClass { private: int alpha; public: void nonFunc() //неконстантный метод { alpha = 99; } //корректно void conFunc()const //константный метод { alpha = 99; } //ошибка: нельзя изменить значение поля }; Для того, чтобы сделать функцию константной, необходимо указать ключевое слово const после прототипа функции, но до начала тела функции. Если объявление и определение функции разделены, то модификатор const необходимо указывать дважды – как при объявлении функции, так и при ее определении. Пусть класс class A { public: const int b; A(int val): b(val){}; } Константа инициализируется в конструкторе в странном месте после описание конструктора и перед его реализацией. Вот код для изменения константы, НО ГЛОБАЛЬНЫЕ константы таким образом НЕ ТРОГАТЬ #include <iostream> using namespace std; class A{ const int val; public: A(): val(1){};
void check() { if (val == 1) cout << "Old value" << endl; else cout << "New value" << endl; }
void change() { int& z=const_cast<int&>(val); z=2; } };
int main() { A a; a.check(); a.change(); a.check(); }
Опишите синтаксис определения метода класса вне описания класса. class <название класса> пример: class A { public: int calc(int,int); } int A:: calc(int a, int b) { return a + b; } Символ:: - это символ является знаком операции глобального доступа.
|