Skip to content

Latest commit

 

History

History
48 lines (41 loc) · 955 Bytes

File metadata and controls

48 lines (41 loc) · 955 Bytes

const-method

  • Метод, который можно вызвать у константного объекта
    • Нельзя менять поля объекта
    • Нельзя вызывать non-const methods
  • mutable - ключевое слово, дающее возможность поменять поле в константном объекте
    • Подробнее см. в DataTypes
struct T {
	int a = 10;

	void foo() const {
		std::cout << a;
	}
};

int main() {
	const T t;
	t.foo(); // OK
}

Перегрузка по константности

struct A {
	void foo() { std::cout << 1; }
	void foo() const { std::cout << 2; }
};

int main() {
	const A a;
	a.foo(); // 2
}

Навешивание

  • Константность на поля класса навешивается "справа":
struct {
	const int* ptr;
	int& a;

	void foo() const {
		*ptr = 20; // OK
		a = 5; // OK
	}
};