有这样一个问题,
有两个类,其中一个是CBase,这个类有如下,通过其派生一个类CDrived,现要求不让CDrived出现在用户的界面上,只能通过添加CBase的公共接口来实现,请问怎么实现?class CBase
{
public:
void draw();
void SetLine();
private:
int radius;
}class CDrived:public CBase
{
public:
void draw();
void SetLine();
private:

}

解决方案 »

  1.   


    class CBase
    {
    public:
    virtual void draw();
    virtual void SetLine();
    private:
    int radius;
    }
      

  2.   

    class CBase
    {
    public:
    virtual void draw();
    virtual void SetLine();
    private:
    int radius;
    }
      

  3.   

    不明白什么意思?
    推荐《C++ Primer》
      

  4.   

    这问题实在让人费解
    什么叫“用户界面”
    什么叫“CBase的公共接口”
    要实现什么?
      

  5.   

    不好意思,也许是我说的不清楚,意思就是CDrived类的头文件和实现文件都封装起来吧,用户不能直接调用CDrived类,也没有CDrived类的头文件,但是可以通过CBase类的PUBLIC函数实现CDrived类的构建、销废等。我也是想了很久,觉的挺怪的。用虚函数不能实现。是不是这个题目有点问题?
      

  6.   

    我不太懂模式
    这其实是COM的原理。
    用一个类厂
    IFactory来生成类实例
    用虚函数来给出接口
      

  7.   

    考的应该是C++多态的知识。
    本例基类CBase中的两个成员函数不是virtual函数,则其派生类CDrived中的两个同名函数与这两个函数没有任何关系。在不能修改派生类的前提下,如果要改变派生类的行为,只有将基类的两个函数改为virtual函数。
      

  8.   

    赞同:SigmaSys(SigmaSys) 
    而且基类的析够函数一定要虚拟