首页 > 编程语言 > 详细

C++虚函数的陷阱

时间:2015-09-24 12:26:21      阅读:135      评论:1      收藏:0      [点我收藏+]

首先看一段代码:

 1 class B   
 2 {    
 3 public:   
 4     virtual void fun(int i = 1)      
 5     {     
 6         std::cout << "base fun called, " << i;     
 7     };    
 8 };  
 9 
10 class D : public B    
11 {    
12 private:    
13     virtual void fun(int i = 2)      
14     {     
15         std::cout << "driver fun called, " << i;     
16     };    
17 }; 

如果进行如下操作:

B* p = new D();    
p->fun();    
会输出 driver fun called, 1

这里出现了两个问题:

(1)子类的虚函数即使被声明为私有函数,仍然被外部调用了。

(2)虚函数虽然是动态绑定的,但缺省的参数值确是静态绑定的。

这两点一定要注意啊!!

C++虚函数的陷阱

原文:http://www.cnblogs.com/WonderHow/p/4834725.html

(0)
(1)
   
举报
评论 一句话评论(1
2015-09-24 12:27:34
c  ,怎么才能精通!?
回复
 (6)
 (1)
1条  
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!