К развенчанию одного программистского мифа
Ежели у вас на интервью спрошено будет, в чем разница между объявлением переменной с инициализатором в скобках и инициализатором с присваиванием, ответствуйте: в первом случае ищется подходящий конструктор, а во втором - подходящее приведение типов, и результат может не совпадать (спасибо
#include <cstdio>
class B { };
class AB : public B
{
public:
AB() {puts("AB()");}
AB(B) {puts("AB(B)");}
};
class BB : public B
{
public:
operator AB () { puts("BB->AB"); return AB(); }
};
int main() {
BB b;
puts("----");
AB aB(b);
puts("----");
AB ABB = b;
return 0;
} печатает
----
AB(B)
----
BB->AB
AB()