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

2 ответа

Конструктор и константная ссылка

Я сейчас изучаю C++ (начал как 2 дня назад), и у меня есть некоторые проблемы с написанием Copy C'tor of Node. Узел является классом следующим образом: template <class T> class Node { T* data; Node<T>* next; friend class Iterator<T&gt…
2 ответа

Константная ссылка на временный объект перестает работать после области действия функции (время жизни)

Задавая этот вопрос, я узнал, что постоянная ссылка на временный объект действительна в C++: int main () { int a = 21; int b = 21; //error: invalid initialization of non-const reference //int & sum = a + b;e [...] //OK int const & sum = a + …
2 ответа

Какой тип константной ссылки?

Я знаю, что передача константной ссылочной переменной в константный ссылочный параметр функции не приводит к тому, что параметр функции имеет тип "константная ссылка на константную ссылку типа рефери". Имя переменной аргумента const reference просто…
12 дек '13 в 23:48
5 ответов

Возвращение константной ссылки массива

Я действительно восхищаюсь функциями Java и не хочу отказываться от использования его для решения следующей проблемы: У меня есть класс, который может быть унаследован, и внутри него есть private ArrayList arr; Так что функция setter в порядке, но ф…
24 ноя '10 в 00:27
4 ответа

Почему это работает? Возвращение константных ссылок в C++

Я дурачусь с C++ и константными ссылками и растерялся, почему этот код работает: #include <iostream> class A { public: A() : a_(50) {} const int& getA() const { return a_; } private: const int a_; }; int main(int argc, char* argv[]) { A* a…
07 фев '10 в 18:34
7 ответов

Продлевает ли член класса Const Reference временный срок?

Почему это: #include <string> #include <iostream> using namespace std; class Sandbox { public: Sandbox(const string& n) : member(n) {} const string& member; }; int main() { Sandbox sandbox(string("four")); cout << "The answ…
5 ответов

C++ Возвращаемое значение, ссылка, константная ссылка

Можете ли вы объяснить мне разницу между возвращаемым значением, ссылкой на значение и константной ссылкой на значение? Значение: Vector2D operator += (const Vector2D& vector) { this->x += vector.x; this->y += vector.y; return *this; } Нек…
1 ответ

Можно ли продлить время жизни объектов в списке инициализатора?

У меня сложилось впечатление, что std::initializer_list может вести себя как строковые литералы в C++, и даже дальше они могут продлить время жизни ссылок на const. Это правильная оценка? Может объекты в initializer_list ссылаться позже (не копируя …
1 ответ

Вернуть локальную переменную в const ref из лямбды

const TBigType& a = [](){ TBigType result; // ... return result; }(); use(a); // by const ref Это нормально, чтобы захватить результат в const ref, как это?
10 ноя '16 в 16:38
2 ответа

Константная ссылка на приведенный int из unsigned int

У меня возникли проблемы с пониманием поведения в этом фрагменте: unsigned int i = 2; const int &r = i; std::cout << r << "\n"; i = 100; std::cout << r << "\n"; Первый оператор print дает 2, как я ожидаю, но когда я измен…
31 июл '16 в 14:08
2 ответа

Автоматически использовать const-ref по большим параметрам

Когда у меня есть следующий псевдокласс: template <class T> class tmplClass { void doSomething(T input); }; Есть ли способ изменить void doSomething(T input) в void doSomething(const T& input) когда sizeof(T) больше, то архитектура системы…
15 май '13 в 20:51
3 ответа

Условное присваивание для константных ссылочных объектов в C++

Вот фрагмент кода, который иллюстрирует мою проблему: class A {...}; const A& foo1() {...} const A& foo2() {...} void foo3(int score) { if (score > 5) const A &reward = foo1(); else const A &reward = foo2(); ... // The 'reward' ob…
27 авг '18 в 16:16
5 ответов

Ссылочная инициализация в C++

Кто-нибудь может объяснить мне, почему есть разница между этими двумя утверждениями? class A{}; const A& a = A(); // correct A& b = A(); // wrong Это говорит о недопустимой инициализации неконстантной ссылки типа A& из временного типа A …
23 фев '10 в 00:41
1 ответ

C++, константная ссылка на самом деле быстрее, чем двигаться?

После тестирования этого кода: #include <iostream> #include <chrono> #include <vector> #include <string> void x(std::vector<std::string>&& v){ } void y(const std::vector<std::string>& v) { } int main()…
13 окт '15 в 01:35
1 ответ

Как я могу сделать класс со ссылочным членом данных конструктивным без аргументов?

У меня есть класс, скажем C, где один из данных члена, скажем, X, зависит от ввода пользователя. Пользовательский ввод может отличаться при каждом запуске, и в моем текущем дизайне все экземпляры моих классов хранят ссылку на один и тот же объект X.…
4 ответа

Есть ли компилятор C++, который может выдавать предупреждение за висячую ссылку?

Учитывая следующий код, где x это висящий const reference исчезнувшему объекту, и, следовательно, неопределенное поведение. auto get_vec() { return std::vector<int>{1,2,3,4,5}; } const auto& x = get_vec().back(); Похоже, что ни GCC 7.3, ни…
1 ответ

Почему возвращаемое значение top() изменяется после вызова pop()?

Ссылка const, возвращаемая priority_queue"s top() меняется после звонка pop() (визуальная студия 2015) priority_queue<int> queue; queue.push(1); queue.push(2); queue.push(3); const int & m = queue.top(); cout << m << endl; // 3…
12 ноя '16 в 12:25
2 ответа

На что жалуется эта странная ошибка конструктора копирования?

Я нахожусь на Visual Studio 2017. Недавно, потому что мне не нравились несоответствующие стандарты C++, я пошел дальше и отключил нестандартные языковые расширения в опциях. Все идет нормально. Теперь у меня проблема. #include <iostream> #incl…
14 окт '17 в 11:15
1 ответ

Использование функции друга с константной ссылкой при перегрузке оператора

Код ниже не может быть скомпилирован. Однако, когда я удаляю "const" из функции Point& of friend, этот код оказывается скомпилированным. Кто-нибудь может объяснить причину? class Point { public: Point(double x, double y); Point operator+(const doubl…
2 ответа

Ссылочный квалификатор Const для функции-члена

Я видел в ответе: более эффективно ли возвращение по ссылке rvalue? Определение функции-члена: Beta_ab const& getAB() const& { return ab; } Я знаком с cv-квалификатором (const) на функции-члены, но не const&, Что делает последний const&a…