调用问题

//派生类中有成员对象,则先调用成员对象的构造函数再调用


#include<iostream>
using namespace std;
//class C; //声明一个还未定义的类供其他函数或者类的方法用作形参或者返回值 但是在这个类未定义前不能创建一个Ha对象更不能直接引用类中的某个成员。
//类的声明应该有完整的构造函数成员等。如下。上面就单单声明存在一个空类。不可创建对象,比如把class A放到class C之前就会出现错误

class C
{
public:
C(int){
cout<<"diao调用C有参构造函数"<<endl;
}
C(){
cout<<"diaowu调用C无参构造函数"<<endl;
}
// int max;//后加的
//private:
// int value;
//C *p;

};

class A{
public:
A(int){
cout<<"diaoyongyoucan调用A有参构造函数"<<endl;
}
A(){
cout<<"diaoyongwu调用A无参构造函数"<<endl;
C c;//类可以前向声明,只是前向声明后不能定义对象只能定义指向该类的的指针和引用。//因为定义对象要用到构造函数而并没有声明构造函数,
}
};
class D:public C
{
public:
D(int){
cout<<"diao调用d有参构造函数"<<endl; //D a3(2);CACD
}
D(){
cout<<"diaowu调用d无参构造函数"<<endl;
}
// C one;
A two;
};


class B:public A
{
public:
B(int){
cout<<"diao调用B有参构造函数"<<endl;
}
B(){
cout<<"diaowu调用B无参构造函数"<<endl;
}
};

int main()
{
//A a(2),b[3],*p[4];
//B a1(2),b1[3],*p1[4];//先调用A的无参再调用B的有参//派生类调用基类为了初始化基类成员,这里基类无成员故调用基类无参构造函数
//C a2(2),b2[3],*p2[4];

D a3(2);//b3[3],*p3[4];//程序运行显示CACD,应该是C CA D暂时未找出问题出现在什么地方

 

}

posted @ 2017-09-09 14:59  Dobben  阅读(117)  评论(0编辑  收藏  举报