Re[8]: const в D, требуется помощь клуба.
От: Павел Кузнецов  
Дата: 07.07.05 05:15
Оценка: 20 (3)
Здравствуйте, 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
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.