Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
1

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

02.05.2010, 21:56. Просмотров 1060. Ответов 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 или вообще из-за чего такие ошибки возникают
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2010, 21:56
Ответы с готовыми решениями:

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

Ключевое слово const
Не могу понять, чем отличаются методы const double Get_l() { return m_length;} const double...

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

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

5
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
02.05.2010, 23:18 2
По Стандарту, конструктор копий (copy constructor) может иметь любую из сигнатур Strochka::Strochka(Strochka&); или Strochka::Strochka(const Strochka&);
0
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
03.05.2010, 13:32  [ТС] 3
ну прям глаза открыл щас)))вопрос то не в стандартах))вопрос, почему в билдере 2009 не прохидит конструктор без const при возвращении и присвоении?
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
03.05.2010, 14:05 4
Значит, это кривизна конкретно дебилдеровского компилятора. Вариантов у тебя только два: либо примириться и считать такое поведение багофичей и помнить о нем, либо - отправить дебилдер туда, где ему самое место (в Корзину).
0
1257 / 795 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
03.05.2010, 14:07 5
salvafion:
Вопрос как раз таки в стандарте: как разработчики компиляторов внедряют этот стандарт в
свои компиляторы.
Это еще мелочь, вы еще не видели, то что компиляторы могут делать: не опираясь ни на какой стандарт.
0
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
03.05.2010, 14:13  [ТС] 6
так я бы понял еслиб он без const не работал вообще..тогда да, это есть особенность компилятора. но он работает и без этого ключевого слова...только конкретно в этом случае он выдал такую ошибку...были бы стандарты тогда бы он везде так ошибку выдавал, а так только в некоторых случаях....2006 же ни че не выдает а работает и с тем и с тем..вот и интересно ииз-за чего такие ошибки могут возникнуть...и вообще че всем билдер так не любят??на мой взгляд очень понятная и простая в использовании программа не то что вижак с его MFC где надо что б обработчик создать через кучу контекстных меню пройти....да и вообще это дело вкуса каждого
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2010, 14:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Ключевое слово this, вызов конструктора
Здравствуйте. Вот не могу понять две строчки: public Car() : this("It's no driver", 0) { }// ? 1...

Что означает ключевое слово const?
Что означает ключевое слово const?

Ключевое слово this, вызов конструктора, пример использования
Не знаю, правильно ли я сделал создав новую тему или надо было продолжить в предыдущих...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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