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

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

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

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

02.05.2010, 21:56. Просмотров 891. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2010, 21:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ключевое слово const в параметрах конструктора копий (C++):

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

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

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

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

Const в параметрах. Перед чем нужно употребить const дабы обезопасить данные от изменения - C++
const int Counter(const TSNum *Start) { int c=0; while(Start!=NULL){Start=Start->next;} return c; } Функция...

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

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

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

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

Определить, в введенном предложении слово, которое состоит из тех же букв, что и заданное ключевое слово. - C++
Ввести предложения и ключевое слово. Определить, в введенном предложении слово, которое состоит из тех же букв, что и заданное ключевое...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.05.2010, 14:13
Ответ Создать тему
Опции темы

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