Re[9]: const в D, требуется помощь клуба.
От: c-smile Канада http://terrainformatica.com
Дата: 07.07.05 05:43
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Здравствуйте, VladD2, Вы писали:


CS>>>
CS>>>class A {...}
CS>>>A a1;
CS>>>const A a2;
CS>>>

CS>>>a1 и a2 принадлежат разным классам. С++ например считает именно так.

VD>>И почему тогда работает

VD>>
VD>>A a1;
VD>>const A a2 = a1;
VD>>

VD>>?

ПК>Потому что тип A is a const A. То же самое будет и с двумя разными классами, определенными соответствующим образом:

ПК>
ПК>class constA { };

ПК>class A : public constA { };

ПК>A a1;
ПК>constA a2 = a1;
ПК>


ПК>Сразу отвечу, почему работает копирование "наоборот":

ПК>
ПК>const A a1;
ПК>A a2 = a1;
ПК>

ПК>Потому что у A определен конструктор, принимающий const A&. Если бы его не было, последнее преобразование не работало бы:
ПК>
ПК>class A {
ПК>public:
ПК>  A() { }
ПК>  A(A&) { }
ПК>};

ПК>const A a1;
ПК>A a2 = a1; // ERROR
ПК>


Спасибо, Павел.

Кстати в C++ есть такая неприятная фенечка:
литеральные строковые константы имеют тип const char []
Но вот такая вот конструкция :
char *p = "привет, Вася!";

очень даже работает. Груз legacy кода как я понимаю...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.