2015-09-07 288 views
-2

我有一个类为它创建一个构造函数“A”。然后我用一个构造函数“B”创建另一个类。我如何使用C++语言从不同类的构造函数调用构造函数“B”,即“A”?从不同类的构造函数调用构造函数

+4

'A :: A(){B(); “从技术上讲,这正是你所要求的,尽管我有强烈的感觉,这并不是你想要做的事情(所陈述的问题没有多大意义)。 –

+0

你试图达到什么目的是绝对不清楚的。你是否试图在A的构造函数中实例化B?你在A类中有一个B类成员字段吗?在创建类实例(对象)时调用构造函数。你的实例在哪里? –

回答

1

在C++成员或类的对象变量本身的字段中,它们的构造函数自动被编译器调用,正好在类实例化的时候,也就是当它自己的构造函数被调用时。在C++中实例化对象的顺序与此类似,基类构造函数get的先调用,然后是成员变量,然后是派生类,它是您的类。

2

如果A继承自B那么您可以从构造函数A中调用基类构造函数。在C++ 11中,你有更多的灵活性,你可以使用委托构造函数。否则,这个问题没有多大意义。

构造函数是一种特殊的函数,只有在创建新对象时才会调用该函数。除非你这样做,否则你不能调用它,通常当你想创建一个新对象时调用构造函数 - 调用构造函数不是你的目标,得到新对象。

1

这将为您的目的服务。

class A { 
    public: 
    A(){ 
//your code 
     } 
}; 



class B{ 
public : 
B():A(){ 
//your code 
} 
}; 
1

如果两个类都不在父亲子关系中,那么你可以将类A组成B类。下面是一个例子。

class B{ 

public: 
    B(){ 
     cout<<"Class B constructor"<<endl; 
    } 
}; 

class A{ 
    B pbj; 
public: 
    A(){ 
     cout<<"Class A Constructor"<<endl; 
    } 
}; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 

    A obj1; 

    return 0; 
}