2014-01-19 2 views
0
class foo 
{ 
    public: 
    foo(); 
    foo(int param){foo::foo();} 
}; 

бы foo::foo(int) вызов foo::foo() как метод и инициализировать элементы объекта или создать безымянный объект? Может ли один конструктор быть вызван как метод из другой функции-конструктора/члена?Построив объект дважды

ответ

2

В этом случае ваш конструктор создаст безымянный объект класса foo, а затем он будет уничтожен.

Если вы хотите, чтобы вызвать конструктор внутри другого конструктора вы можете это сделать (только в C++ 11) с делегировании конструктору

Пример:

class foo 
{ 
    public: 
    foo(); 
    foo(int param) : foo() {} 
}; 
+0

звонит один конструктор из другое как-то возможно в C++ 0x? – Ivars

+0

@ user2543574, Да, и ответ показывает, как. – chris

+1

@ user2543574 Нет такой вещи, как C++ 0x. Ответ xorguy применяется к C++ 11. Ознакомьтесь с руководством вашего компилятора, чтобы узнать, какие функции C++ 11 он поддерживает. GCC поддерживает делегирование конструкторов с 4.7. – Oswald

Смежные вопросы