Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
salvafion
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 193
#1

ключевое слово const в параметрах конструктора копий - C++

02.05.2010, 21:56. Просмотров 874. Ответов 5
Метки нет (Все метки)

вот такая делема возникла))есть билдер 2006 и 2009 в 6-ом конструктор копий определен так
Имя(Имя&); и все прекрасно работает как надо, когда я открываю проект в 2009 и нажимаю на запуск мне выскакивает ошибка на присваивании объекту функции, которая возвращает другой объект
[BCC32 Error] Unit1.cpp(175): E2285 Could not find a match for 'Strochka::Strochka(Strochka&)'
но это не все...я потом решил сделать определение конструктора так Strochka::Strochka(const Strochka&); и воаля..все заработало отлично..

объясните мне в чем суть? что видит 2009 чего не видит 2006 или вообще из-за чего такие ошибки возникают
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2010, 21:56     ключевое слово const в параметрах конструктора копий
Посмотрите здесь:

Ключевое слово class в параметрах функции - C++
Всем привет. Увидел в чужом коде такую конструкцию. void SomeFunction(class SomeClass * a) { a->F(); } В параметрах...

Ключевое слово const после ключевого слова new - C++
Наткнулся на такую запись const int* ciq = new const int (3); Какую роль играет const после new?

Ключевое слово const после декларации функции в классе - C++
Здравствуйте, у меня есть подобный класс-шаблон: template <typename Type> class Array { private: Type* ptr; // ...

Ключевое слово const для возвращаемого значения из функции - C++
Думал что это означает следующее "Нельзя изменить значение которое вернет функция" Но проверил и оказалось что это не так #include...

Вызов конструктора копий - C++
Почему из строк 186-191 вызывается конструктор копий 83-91? #include "stdafx.h" #define DEBUG #define SHOW_INVARIANTS #include...

Вызов конструктора копий - C++
Всех приветствую! Имеется следующий простенький код: #include <iostream> using namespace std; class Object { ...

Не хватает одного конструктора копий - C++
Вообщем поставил в коде вывод сообщений через cout, чтобы проследить кто и в какой момент запускается, и подсчитал следующий вывод : В...

Спецификатор const у конструктора - C++
Добрый вечер, почему конструктор и деструктор не могут иметь спецификатор const? - если бы было можно можно было бы определить...

Ключевое слово this - C++
В данный момент читаю книгу по Java, но и по С++ это тоже встречалось, хотя описание было не сильно понятно. Вопрос следующий, что делает...

Ключевое слово this - C++
Можно какой-нибудь простой пример, чтобы понять зачем это нужно?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,352
02.05.2010, 23:18     ключевое слово const в параметрах конструктора копий #2
По Стандарту, конструктор копий (copy constructor) может иметь любую из сигнатур Strochka::Strochka(Strochka&); или Strochka::Strochka(const Strochka&);
salvafion
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 193
03.05.2010, 13:32  [ТС]     ключевое слово const в параметрах конструктора копий #3
ну прям глаза открыл щас)))вопрос то не в стандартах))вопрос, почему в билдере 2009 не прохидит конструктор без const при возвращении и присвоении?
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,352
03.05.2010, 14:05     ключевое слово const в параметрах конструктора копий #4
Значит, это кривизна конкретно дебилдеровского компилятора. Вариантов у тебя только два: либо примириться и считать такое поведение багофичей и помнить о нем, либо - отправить дебилдер туда, где ему самое место (в Корзину).
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
03.05.2010, 14:07     ключевое слово const в параметрах конструктора копий #5
salvafion:
Вопрос как раз таки в стандарте: как разработчики компиляторов внедряют этот стандарт в
свои компиляторы.
Это еще мелочь, вы еще не видели, то что компиляторы могут делать: не опираясь ни на какой стандарт.
salvafion
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 193
03.05.2010, 14:13  [ТС]     ключевое слово const в параметрах конструктора копий #6
так я бы понял еслиб он без const не работал вообще..тогда да, это есть особенность компилятора. но он работает и без этого ключевого слова...только конкретно в этом случае он выдал такую ошибку...были бы стандарты тогда бы он везде так ошибку выдавал, а так только в некоторых случаях....2006 же ни че не выдает а работает и с тем и с тем..вот и интересно ииз-за чего такие ошибки могут возникнуть...и вообще че всем билдер так не любят??на мой взгляд очень понятная и простая в использовании программа не то что вижак с его MFC где надо что б обработчик создать через кучу контекстных меню пройти....да и вообще это дело вкуса каждого
Yandex
Объявления
03.05.2010, 14:13     ключевое слово const в параметрах конструктора копий
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru