Вопросы по теме 'const-correctness'

Как справиться с инициализацией неконстантного ссылочного члена в константном объекте?
Допустим, у вас есть класс class C { int * i; public: C(int * v):i(v) {}; void method() const; //this method does not change i void method(); //this method changes i } Теперь вы...
2522 просмотров
schedule 13.06.2023

Логическая константа в D
D имеет два типа константности: неизменяемые переменные — это те, которые были объявлены неизменяемыми и всегда будут неизменяемыми, в то время как неизменяемые переменные — это просто версии объекта, доступные только для чтения. Логическая...
1784 просмотров
schedule 02.06.2023

Вызов неконстантного метода для члена из константного метода
Я был удивлен, обнаружив эту "дыру" в "константе": #include <stdio.h> class A { int r ; public: A():r(0){} void nonconst() { puts( "I am in ur nonconst method" ) ; r++; } } ; class B { A a ; A* aPtr ; public: B(){...
382 просмотров
schedule 25.02.2023

C++ перегружает операторы преобразования
Я пытаюсь создать класс, который допускает неявное приведение к определенным встроенным типам, таким как unsigned long int, и поскольку я пытаюсь сделать это максимально корректно (это мой первый важный проект на C++), я столкнулся со странным вопрос...
44143 просмотров

Являются ли референтные члены хорошей практикой? Являются константными членами?
Мы с коллегой обсуждаем, правильнее ли будет использовать константные или ссылочные члены. Члены const и reference делают класс некопируемым и неперемещаемым, если только вы не напишете свои собственные операторы копирования и перемещения, которые...
348 просмотров

Инициализация неконстантного параметра строковым литералом
Итак, у меня есть этот код: class ConstTest { public: explicit ConstTest(char* name) {} }; int main() { ConstTest t("blarghgh"); } Очевидно, что он компилируется , хотя я думал, что этого не должно быть. Поскольку строковые...
1434 просмотров
schedule 18.06.2022

C ++ Предотвращение изменения данных константными методами с помощью указателя или ссылки на член
Скажем, у меня есть такой простой класс class Foo { public: void foo()const { str[5] = 'x'; obj->changeTheWorld(); x = 4; y.get() = 5; obj2->changeTheWorld(); } private: char *str;...
397 просмотров
schedule 21.04.2022

Должен ли я сделать свои локальные переменные постоянными или подвижными?
Мое поведение по умолчанию для любых объектов в локальных областях — сделать его const . Например.: auto const cake = bake_cake(arguments); Я стараюсь иметь как можно меньше нефункционального кода, поскольку это повышает читабельность (и...
435 просмотров