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

虚函数有关问题

2012-03-26 
虚函数问题刚刚一帖还有一个小问题没弄懂:classA{public:voidf(){printf( thisisa::f(double)\n )}}cl

虚函数问题
刚刚一帖还有一个小问题没弄懂:

class   A{

      public   :
        void   f(){   printf( "this   is   a::f(double)\n ");}
};

class   B:   public   A{

public:
      void   f(double   b){     printf( "this   is   b::f(Complex)\n ");  
                    }
};

int   main(){


  B   b;
  b.f();//编译出错
  b.f(2.0);   //     this   is   b::f(Complex)

return   0}

个人想法:如果子类中有同名方法(参数,返回值和父类同名方法可能不同),将无法调用父类方法,如上b.f()想调用父类无参方法,将编译出错。
只有子类中没有和父类重名的方法,才能有调用到父类方法。
不知我的想法对不对,请各位指教。

[解决办法]
b.A::f();
[解决办法]
同名函数,derived类覆盖base类的
[解决办法]
1。显式限制可以的执行基类的public同名函数
2。virtual机制+显示限制
[解决办法]
只有子类中没有和父类重名的方法,才能有调用到父类方法。
===========================
不同名的函数,同样不能直接的使用,需显式的限制
[解决办法]
如果A类中f()前有virtual才可以称为是虚函数。因此
B b;
b.f();
这样写肯定会出错。
[解决办法]
用对象,可以
base指针,引用则不能的
所以说的virtual
[解决办法]
分析是对的,但是这种做法(派生类里面有和基类同名的函数)非常不值得推荐
[解决办法]

这叫名称隐藏吧.但又不是隐藏很深...
[解决办法]
看点书去吧。

1,使用virtual修饰方法。
2,使用指针或者引用调用方法。

[解决办法]
隐藏

热点排行