首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于继承的有关问题

2012-04-22 
关于继承的问题第一个,classa{public:a(int)}classb:publica{b(int){}}编译后会有C2512错误,但如果只定

关于继承的问题
第一个,
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了

热点排行