Описание тега const-correctness

2 ответа

Как передать контейнер unique_ptrs, где контейнер, ptrs и объекты не могут быть изменены?

У меня есть контейнер vector который имеет std::unique_ptr какого-то типа. Я хочу вернуть этот контейнер, но также хочу убедиться, что я не хочу, чтобы контейнер, указатель или объект, на который указывает объект, были модифицируемыми. Я также не хо…
19 мар '18 в 21:01
3 ответа

Вызов неконстантного метода для члена из метода const

Я был удивлен, обнаружив эту "дыру" в "постоянстве": #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(){ aPtr = new A() ; } void go(…
19 дек '11 в 03:23
6 ответов

Перегрузка функции const

Я запутался, почему следующий код не выдает никакой ошибки, потому что переданные для отображения аргументы имеют тот же тип, т.е. char.Does const действительно имеет значение? #include<iostream> using namespace std; void display(char *p) { co…
26 июл '13 в 07:23
3 ответа

Как сохранить этот const-правильный, не обманывая компилятор?

У меня есть такой класс C++: class Example { public: int getSomeProperty(int id) const; private: lazilyLoadSomeData(); } В принципе getSomeProperty() вернуть некоторые данные, которые были загружены с помощью lazilyLoadSomeData(), Поскольку я не хоч…
17 дек '11 в 13:57
7 ответов

"правильная константа" в C#

Суть правильности const заключается в том, чтобы иметь возможность предоставлять представление экземпляра, который не может быть изменен или удален пользователем. Компилятор поддерживает это, указывая, когда вы нарушаете константность внутри констан…
22 сен '08 в 10:25
4 ответа

Правильность const для структур с указателями

У меня есть структура, которая содержит несколько указателей. Я хочу, чтобы их значение не изменялось. Но простое написание const infront не делает членов структуры неизменными typedef struct{ int *x; int *y; }point; void get(const point *p,int x, i…
01 ноя '12 в 16:36
2 ответа

Шаблонная мета-магия C++, механизм вывода квалификационных оценок шаблонного сайта вызова

Я извиняюсь за многословность этого примера, я придумал его из проекта. Комментарии 1 и 2 важны в следующем коде. #include <boost/intrusive/set.hpp> struct x : public boost::intrusive::set_base_hook<> { int y; }; struct finder { bool ope…
4 ответа

C++ перегрузка операторов преобразования

Я пытаюсь создать класс, позволяющий неявное приведение к некоторым встроенным типам, например unsigned long int, и, поскольку я пытаюсь сделать это максимально корректно (это мой первый важный проект в C++), я столкнулся со странным вопрос относите…
23 апр '12 в 13:19
14 ответов

Почему const-правильность специфична для C++?

Отказ от ответственности: я знаю, что есть два вопроса о полезности const-правильности, однако ни один не обсуждал, как const-правильность необходима в C++ в отличие от других языков программирования. Кроме того, я не удовлетворен ответами на эти во…
02 сен '09 в 20:53
1 ответ

Почему тип gptr для basic_streambuf char_type* вместо const char_type*?

basic_streambuf член, чтобы установить три "gptrs" streambuf, setg, объявляется как: protected: void setg(char_type *gback, char_type *gptr, char_type *egptr); Мне интересно: почему был сделан тип каждого gptr char_type* вместо const char_type*? Без…
05 дек '10 в 23:19
6 ответов

Тип указателя только для записи

Я пишу программное обеспечение для встроенной системы. Мы используем указатели для доступа к регистрам устройства FPGA.Некоторые из регистров доступны только для чтения, а другие только для записи. Регистры только для записи будут давать неопределен…
17 апр '13 в 00:12
1 ответ

Есть ли разница между const Class и Class const&?

Есть ли разница между этими выражениями: const Class& Class const& например, когда это параметры функции?
02 фев '16 в 12:09
4 ответа

"Const LPVOID" эквивалентен "void * const"?

И если так, то почему некоторые заголовки Win32 используют его? Например: BOOL APIENTRY VerQueryValueA( const LPVOID pBlock, LPSTR lpSubBlock, LPVOID * lplpBuffer, PUINT puLen ); Немного сложнее: если API никогда не использует ссылки (или любые друг…
27 ноя '09 в 12:24
1 ответ

Вызвать функцию на итераторе

У меня есть std:: список объектов Ray, который я хочу перебрать. for (std::list<Ray>::const_iterator it = clRay.begin(), end = clRay.end(); it != end; ++it) { *it->setDir( m_v3Position - *it->getOrigin() ) } А у объектов Ray есть методы …
04 май '17 в 23:00
5 ответов

Должен ли я объявить любой метод, который может быть const const метод

Простой вопрос Should I declare any method that can be const a const method? Это включает в себя методы, которые не возвращают никаких переменных-членов или возвращают константные ссылки на переменные-члены. Есть ли причина не делать этого (кроме оч…
18 апр '11 в 20:03
1 ответ

Как создать быструю константную корректную буферную оболочку класса C++?

Как создать класс-оболочку для существующего объекта, который автоматически запрещает или разрешает изменение данных обернутого объекта в зависимости от того, был ли обернутый объект предоставлен в конструктор с определителем типа const или без него…
15 фев '16 в 22:33
1 ответ

C++ QList const правильность

Я хотел бы заполнить QList<double> с const double ценности. Эти const double возвращаются методом, который я не должен менять. Как это сделать просто?
10 апр '13 в 08:37
2 ответа

В C++, когда я должен сделать метод постоянным?

Название моего вопроса в значительной степени задает все это. Недавно я обнаружил, что это хорошая практика программирования на C++ - передавать множество значений по константной ссылке и помечать определенные методы в классах как постоянный метод. …
23 дек '15 в 05:34
1 ответ

Правильность с умными указателями

Я пытаюсь понять, как лучше const-correctness работать и, более конкретно, при работе с классами, члены которых основаны на containers а также smart pointers, Я думаю, что const-correctness свойство одинаково независимо от членов класса. Однако, пос…
4 ответа

C++: автоматический констант?

Когда я компилирую этот код: class DecoratedString { private: std::string m_String; public: // ... constructs, destructors, etc std::string& ToString() const { return m_String; } } Я получаю следующую ошибку от g++: invalid initialization of ref…
10 июл '10 в 17:28