大家新年快乐! 散分50,再问个简单的问题.
#include <iostream>
using namespace std;
class B
{
public:
B(int m, int n): x(m), y(n){}
private:
int x, y;
};
class A: public B
{
public:
A(int x, int m = 0, int n = 0): B(m, n), a(x){}
private:
int a;
};
在这个程序里面, 类A公有继承类B, 基类B的数据成员不能被继承, 但用类A创建对象时却必须为类B的私有成员x,y初始化, 我觉得这似乎很冗余, 但却又必须得这样做, 请问还有没有什么的解决方法?
[解决办法]
我觉得B对A是可见的,在A中调用B的构造函数并不过分,何况只需要写一次代码。如果还嫌麻烦的话为B写一个默认构造函数就是了。
[解决办法]
不看春晚来回贴:
继承时 ,你的方法已经是最好的了!!!
[解决办法]
你的一点看法不对:
在这个程序里面, 类A公有继承类B, 基类B的数据成员不能被继承
~~~~~~~~~~~~~~~~~~~~~~~~~~
基类B的数据成员当然也被继承了。 只不过对于基类B的私有数据成员不能被直接访问而已。
你可以调用基类B的共有数据接口来访问。
#include <iostream>
using namespace std;
class B
{
public:
B(int m, int n): x(m), y(n){}
void virtual output_xy(){cout < <x < < " " < <y < <endl;}
private:
int x, y;
};
class A: public B
{
public:
A(int x, int m = 0, int n = 0): B(m, n), a(x){}
void output(){cout < <a < < " " < <endl; output_xy();}
private:
int a;
};
int main()
{
A a_temp(1, 2, 3);
a_temp.output();
return 0;
}
[解决办法]
看完春晚!来回帖!
[解决办法]
看完赵本山老头!来回帖!
[解决办法]
子类完全继承基类的数据成员,但是能访问否却又是一回事。
[解决办法]
不矛盾
你在A类中提供了自定义的构造函数和接口
在对派生类B进行实例化,先调用基类的构造函数,请问你对你自定义的构造函数和接口负的责任在
哪里?你太有才了。
加个默认的构造函数
大家新年快乐! 散分50,再问个简单的有关问题
大家新年快乐! 散分50,再问个简单的问题.#includeiostreamusingnamespacestdclassB{public:B(intm,intn
