读书人

关于继承的有关问题

发布时间: 2012-04-22 18:34:46 作者: rapoo

关于继承的问题
第一个,
class a
{
public:
a(int);
};

class b : public a
{
b(int) {}
};

编译后会有C2512错误,但如果只定义b的构造函数而不写函数体就没问题。为什么?我的环境是VS2005.

第二个,能不能选择继承?比如
class a
{
virtual void func1();
virtual void func2();
};
class b
{
virtual void func1();
virtual void func2();
virtual void func3();
};
现在有一个类c,它只想继承a的func1()和b的func2(),有没有可能在不修改两个基类的情况下实现?

谢谢!

[解决办法]
问题1,等你用到b来构造变量的时候就知道了
问题2,必须c自己实现这2个函数,可以在里面转调用基类的版本。
[解决办法]
你不可能禁止别人通过b*来访问func3,虽然你可以禁止别人通过c*来访问func3。
问题1,你定义一个b x(1);就知道了
[解决办法]
class a
{
1.
public:
a(int);
};

class b : public a
{
b(int x):a(x) {}//要加上基类构造函数
};


2.
class a
{
virtual void func1();
virtual void func2();
};
class b
{
virtual void func1();
virtual void func2();
virtual void func3();
};
构造一个中间层:b_mid和a_mid
class mid_a:private a
{
void func1(){}
}
class mid_b:private b
{
public:
void func2(){}
};

以后想要从a,b继承的时候从mid_a,mid_b继承就OK了

读书人网 >C++

热点推荐