Вопросы по теме 'const-correctness'
Const-correct Notifier в шаблоне Observer
Я хочу реализовать наблюдатель класса модели, который не меняет модель. Таким образом, он должен иметь возможность использовать const-Reference для доступа к модели. Но Регистрация Наблюдателя запрещает это.
Вот как реализован шаблон наблюдателя...
974 просмотров
schedule
12.10.2023
Почему константная корректность специфична для C ++?
Отказ от ответственности: я знаю, что есть два вопроса о полезности константной корректности, однако ни один из них не обсуждал, как константная корректность необходима в C ++ по сравнению с другими языками программирования. Кроме того, я не...
8209 просмотров
schedule
04.03.2022
Имеет ли смысл делать фундаментальный (не указатель) параметр константой?
Недавно у меня был обмен с другим разработчиком C ++ по поводу следующего использования const :
void Foo(const int bar);
Он считал, что использование const таким образом было хорошей практикой.
Я утверждал, что он ничего не делает для...
1807 просмотров
schedule
07.02.2022
RAII: инициализация элемента данных в методе const
В RAII ресурсы не инициализируются до тех пор, пока к ним не будет осуществлен доступ. Однако многие методы доступа объявлены постоянными. Мне нужно вызвать функцию mutable (неконстантную) для инициализации элемента данных.
Пример: загрузка...
792 просмотров
schedule
10.05.2022
Может ли константная корректность улучшить производительность?
Я много раз читал, что обеспечение константной корректности в вашем коде C или C ++ является не только хорошей практикой с точки зрения ремонтопригодности, но также может позволить вашему компилятору выполнять оптимизацию. Однако я также прочитал...
25275 просмотров
schedule
06.07.2023
Постоянный аргумент указателя на метод, который делегирует функцию removeAll().
Рассмотрим такой метод:
void Parent::removeChild(Child *child)
{
children.removeAll(child);
}
В этом случае, поскольку child сам по себе никогда не модифицируется, его можно сделать константным указателем. Но так как children имеет...
512 просмотров
schedule
16.03.2022
могут ли функторы, вызываемые из алгоритмов, действующих на карте, принимать пару‹K, V› вместо value_type?
Я попытался написать короткую функцию для инвертирования std::map<K, V> (я знаю о boost.bimap, это для самообразования) и, к моему удивлению, обнаружил, что код, принятый GCC 4.4 с настройками -pedantic -ansi, был отклонен как const-incorrect...
199 просмотров
schedule
06.10.2022
std :: vector объектов и const-корректность
Учтите следующее:
class A {
public:
const int c; // must not be modified!
A(int _c)
: c(_c)
{
// Nothing here
}
A(const A& copy)
: c(copy.c)
{
// Nothing here
}
};
int main(int...
5089 просмотров
schedule
10.04.2022
Как вызвать неконстантную функцию внутри константной функции (C++)
У меня есть устаревшая функция, которая выглядит так:
int Random() const
{
return var_ ? 4 : 0;
}
и мне нужно вызвать функцию в этом унаследованном коде, чтобы теперь она выглядела так:
int Random() const
{
return var_ ? newCall(4) :...
32660 просмотров
schedule
13.10.2022
Как мы можем назвать это удалением; в константной функции-члене?
Я видел следующий фрагмент кода:
class UPNumber {
public:
UPNumber();
UPNumber(int initValue);
...
// pseudo-destructor (a const member function, because
// even const objects may be destroyed)
void destroy() const { delete this; } //...
1148 просмотров
schedule
30.06.2022
C++ позволяет избежать дублирования кода для константных и неконстантных посещений
У меня есть класс, который должен вызывать метод посетителя для каждой переменной-члена. Что-то вроде этого:
class A{
int a, b, c;
public:
void accept(Visitor &visitor){
visitor.visit(a);
visitor.visit(b);...
1523 просмотров
schedule
30.05.2024
UnitTest++ Зачем нужны перегрузки CheckEqual(), которые принимают неконстантный char*
В фреймворке UnitTest++ в модуле Checks.cpp есть 4 перегруженные версии CheckEqual. Каждая перегрузка принимает различную константу для ожидаемой или фактической. Затем все четыре просто вызывают CheckStringsEqual(), который принимает char const*...
503 просмотров
schedule
29.08.2022
рекомендуется ли добавлять const в конце функций-членов - где это уместно?
Является ли хорошей практикой в C++ добавление const в конец определения функции-члена каждый раз , когда функция не изменяет объект, т. е. каждый раз, когда функция «приемлема» для const? Я знаю, что в этом случае необходимо:
class MyClass {...
7367 просмотров
schedule
27.05.2022
Почему нет концепции константной правильности для статических функций-членов класса?
Вариант использования:
class A {
static int s_common;
public:
static int getCommon () const { s_common; };
};
Обычно это приводит к ошибке:
ошибка: статическая функция-член ‘static int A::getCommon()’ не может иметь cv-qualifier...
1139 просмотров
schedule
21.05.2022
Подрывает ли этот код систему типов C ++?
Я понимаю, что наличие метода const в C ++ означает, что объект доступен только для чтения с помощью этого метода, но в противном случае он все равно может измениться.
Однако этот код, очевидно, изменяет объект с помощью ссылки const (т.е. с...
831 просмотров
schedule
28.10.2022
Есть ли что-то вроде std::value_wrapper параллельно std::reference_wrapper?
( ОБНОВЛЕНИЕ: этот вопрос связан с реализацией класса-оболочки, передаваемого по значению для объекта, который имеет разные значения для const Foo и Foo , на основе перемещения исключительно на твердом мнении людей здесь . До этого я раздавал...
272 просмотров
schedule
21.02.2023
Корректность констант в C # с богатыми типами
Исходя из опыта работы с C ++ и пытаясь изучить C #, одно из самых неприятных упущений языка, с которыми я столкнулся, - это эквивалент ключевого слова const .
Итак, я пытался выбрать шаблон, который можно использовать для достижения константной...
494 просмотров
schedule
06.08.2022
Всегда ли указатель this является константой?
Пусть X будет классом с функцией-членом f() .
this — это неявный аргумент для f() , он имеет тип X* const .
Затем, если f() const является константной функцией-членом, тип указателя this теперь будет const X* const .
В обоих...
1286 просмотров
schedule
09.06.2023
С++ возвращает неконстантную ссылку из константного объекта
У меня есть структура, содержащая ссылку в ней
template <class T>
struct RefContainer {
RefContainer(T& t) : _r(t) {}
T& getRef() {
return _r;
}
private:
T& _r;
};
Теперь другой объект, который...
176 просмотров
schedule
28.03.2022
Идиоматический способ объявления неизменяемых классов C ++
Итак, у меня есть довольно обширный функциональный код, в котором основным типом данных являются неизменяемые структуры / классы. Способ, которым я объявлял неизменяемость, «практически неизменяем», делая переменные-члены и любые методы константными....
18886 просмотров
schedule
14.02.2022