|
|||||||
Типы инициализации, Списки инициализации, Делигирующие конструкторы, Статические поля
Время создания: 13.06.2020 18:28
Раздел: C++ - Примеры кода - Работа на уроке
Запись: Shut913/Tetra-notes-Programming/master/base/1592062082bf2qh3w049/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
sources.cpp #include <string> #include <iostream> using namespace std; // инициализация // ТИПЫ инициализации // int a = 5; // копированием // int a(5) // прямая // int a{5} // унифицированная // Списки инициализации членов класса // 1. Смотрит, какие поля класса хотим создать // 2. Ищем конструктор // 3. Ищем список инициализации (есть => инициализируем) // 4. Если нет инициализатора => используем значения по-умолчанию (если есть) // 5. Идем в тело конструктора //class A //{ //public: // A(int a) // { // cout << "A constructor"; // } //}; // //class Point //{ // int _x = 2; // int _y = 2; // const string _name; // const int _arr[5]; // A _a; //public: // Point() : // _x{ 0 }, // _y{ 0 }, // _name{"A"}, // _arr{1, 2, 3, 4, 5}, // _a(33) // {} // // void show() // { // cout << _x << " " << _y; // } //}; // class RGBA // int // RGB = 0; A = 255 // show() // === Дилегирующие конструкторы // 1. Либо список Инициализации либо делегирование // 2. Избегать зацикливания //class A //{ //public: // A(int a) // { // cout << "from first " << a; // } // A(int a, int b) : A(a) // { // cout << "from second " << b; // } //}; main.cpp #include "sources.cpp" // static void go() { static int a = 0; cout << ++a; } // static in classes // // избегайте создания чисто статических классов // static члены не зависят от модификаторов доступа // нельзя создавать статические конструкторы class A { public: int x; int y; static int val; static void go() {
val++; } }; int A::val = 10; int main() { A a1; A a2; cout << A::val << endl; a1.val = 140; cout << a1.val << endl; cout << a2.val << endl; cout << A::val; } // class User // int _id, string _name; // show(); |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|