MyTetra Share
Делитесь знаниями!
Типы инициализации, Списки инициализации, Делигирующие конструкторы, Статические поля
Время создания: 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();



Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования