Консультация № 72684
26.01.2007, 05:00
0.00 руб.
0 4 4
можно ли в с++ вызвать один конструктор из другого?

Обсуждение

Неизвестный
26.01.2007, 05:53
общий
это ответ
Здравствуйте, Vladimir~!

конечно. а в чем проблема то?
если один класс наследуется от другого:
class A
{
public:
A(){};
}

class B: public A
{
public:
B():A() {};

}
из констуктора B() вызвается коструктор класса A()
Неизвестный
26.01.2007, 10:18
общий
это ответ
Здравствуйте, Vladimir~

На Си это можно записать так:
class X{
private:
int x, y;
public:
X(int x1=0,int y1=0) {
x = x1;
y = y1;
}
};

И вызвать функцию можно будет:
и так и так:
my=new(X);//с параметрами по умолчанию
my=new(X(5,6));//с двумя новыми параметрами

Неизвестный
26.01.2007, 12:31
общий
это ответ
Здравствуйте, Vladimir~!

напрямую нет, конструктор можно вызывать только создавая новый объект класса.
если не секрет, то зачем тебе вызывать еще один конструктор? если же так надо, то напиши метод, который дублировал бы действия конструктора, который ты хочешь вызвать
Неизвестный
26.01.2007, 15:21
общий
это ответ
Здравствуйте, Vladimir~!
К сожалению нет. Проблема вот в чем: если вы вызовете другой конструктор, компьютер создаст и проинициализирует временный объект, а не объект, из которого вызван конструктор. Вы можете совместить два конструктора, используя значения параметров по умолчанию, или вы можете разместить общий для двух конструкторов код в закрытой (private) функции - члене init().
Форма ответа