您的位置:首页 > 其它

如何调用父类 有参构造函数

2013-10-13 21:02 375 查看
[cpp] view
plaincopy

#include <iostream>  

using namespace std;  

class A  

{  

public:  

    int a;  

    int b;  

A()  

{  

    cout<<"A Constructed\n";  

}  

};  

class B:A  

{  

public:  

    int c;  

    int d;  

  

B()  

{  

    cout<<"B Constructed\n";  

}  

};  

int main()  

{  

    B b;  

    return 1;  

}  

如上面代码所示,B类继承自A类,当生成B的实例b时,要先执行A的构造函数,然后执行B的构造函数。结果如下所示:



若B使用有参构造函数,如下面代码所示,仍然会调用A的无参构造函数。

[cpp] view
plaincopy

#include <iostream>  

using namespace std;  

class A  

{  

public:  

    int a;  

    int b;  

A()  

{  

    cout<<"A Constructed 1\n";  

}  

A(int a,int b)  

{  

    this->a=a;  

    this->b=b;  

    cout<<"A Constructed 2\n";  

}  

};  

class B:A  

{  

public:  

    int c;  

    int d;  

B()  

{  

    cout<<"B Constructed 1\n";  

}  

B(int c,int d)  

{  

    this->c=c;  

    this->d=d;  

    cout<<"B Constructed 2\n";  

}  

};  

int main()  

{  

    B b(1,1);  

    return 1;  

}  

运行结果:



但是如何在构造函数中调用父类的有参构造函数呢?实现代码如下:

[cpp] view
plaincopy

#include <iostream>  

using namespace std;  

class A  

{  

public:  

    int a;  

    int b;  

A()  

{  

    cout<<"A Constructed 1\n";  

}  

A(int a,int b)  

{  

    this->a=a;  

    this->b=b;  

    cout<<"A Constructed 2\n";  

}  

};  

class B:A  

{  

public:  

    int c;  

    int d;  

B()  

{  

    cout<<"B Constructed 1\n";  

}  

B(int c,int d):A(100,200)  

{  

    this->c=c;  

    this->d=d;  

    cout<<"B Constructed 2\n";  

}  

};  

int main()  

{  

    B b(1,1);  

    return 1;  

}  

运行结果:



可以看见确实执行了有参构造函数,但是,调用的父类有参构造函数的参数是在子类的构造函数实现时便确定的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: