Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Билет 5
- //Целочисленные константы класса
- //Инициализация констант в классе. Примеры
- class MyClass1 {
- const int val = 50;
- //const int val;
- public:
- MyClass1() = default;
- /*
- MyClass(int new_val) {
- val = new_val; // ошибка. Поле val в этот момент уже создано и
- //так как оно константное - его нельзя менять
- }
- */
- //тут мы инициализируем val в момент создания, через лист инициализации, "налету"
- MyClass1(int new_val) : val(new_val) {}
- /*
- Поэтому либо используйте статическую константу, которая сто процентов не изменится,
- либо используйте константу + динамический массив.
- */
- int GetVal() const {
- return val;
- }
- //так как val можно изменить - можно создать динамический массив, а статический нельзя
- int* pointer_i = new int[val]; //можно
- //нельзя
- //int a[val];
- };
- class MyClass2 {
- static const int val = 50;
- public:
- //так сделать уже нельзя
- //MyClass2(int new_val) : val(new_val) {}
- int GetVal() const {
- return val;
- }
- //так как val - невозможно изменить - можно создать и динамический и статический массивы размера val
- int* pointer_i = new int[val];
- int a[val];
- };
- #include <iostream>
- int main() {
- //Тут пример, как можно в констаное поле класса записать значение.
- MyClass1 a;
- std::cout << a.GetVal() << '\n';
- MyClass1 b(100);
- std::cout << b.GetVal() << '\n';
- //Тут пример класса, константное поле котороего переписать не получится
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement