starnet 阅读(1193) 评论(3)
例:
class base
{
public:
    void fun(int param);
    void fun(char param);
};

class derive :public base
{
public:
    void fun(string param);
    using base:fun; //只能用函数名,不能带参数,表示引入基类的重载函数集,而不能是一个实例
};

评论列表
老梆菜
哦~~~~~~~~
知道啦。
我怎么知道的越多,越感觉C++的语法这么怪异呀?**什么看法?
hpho
re: 在派生类中重载基类的成员函数
知道并不一定就了解, 抛个砖
class A{
public:
    void foo(){}
};

class B{
private:
   using A::foo;
};

B b; b.foo(); // 这个在vc6下是err, 在g++下却pass
明显VC把USING和存取级别关联着.

另一块砖:
class A{
public:
   ~A(){}
};

class B: public A{
private:
   using A::~A;
};
A::~A的合法性? VC6是PASS , G++则ERR

C++的语法有个特点就是单个性质去理解和使用时没什么, 一但组合其它语法规则就会出现互相干扰和变得复杂难搞!
blog of vc_stude
re: 在派生类中重载基类的成员函数
也许你说的对,但更合理的设计应该是基类被派生类重载的函数集合应该是公用接口或至少是protected的,如果设计成私有的就没必要在基类中重载了!

发表评论
切换编辑模式