Описание тега 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…
16 мар '11 в 17:13
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 свойство одинаково независимо от членов класса. Однако, пос…
09 янв '12 в 19:02
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