c++动态陷阱
2013-11-14 14:35
176 查看
记录以防忘记
class base{
public:
........
};
class derive:public base{
public:
void test();
};
int
main(){
derive child;
base *father = &child;
father->test();//error
}
father->test()会报错。因为对于非virtual函数调用,在编译期就已经确定函数地址了,只要virtual函数调用才会触发动态调用。base类是没有test方法的,所以编译通不过。
class base{
public:
........
};
class derive:public base{
public:
void test();
};
int
main(){
derive child;
base *father = &child;
father->test();//error
}
father->test()会报错。因为对于非virtual函数调用,在编译期就已经确定函数地址了,只要virtual函数调用才会触发动态调用。base类是没有test方法的,所以编译通不过。
相关文章推荐
- 1817[校园歌手大赛]
- C++之模板
- c++ 问题
- Type Conversions in Cpp
- C语言教学--二维数组和指针的理解
- C语言教学--一 一维数组与指针
- C语言教学--函数之间传值和传址的区别
- cppPrimer5
- C语言经典算法100例(三)
- C语言经典算法100例(二)
- C++ 子对话框窗口调用父对话框中的消息函数
- C语言经典算法100例(一)
- uva 10282 初学哈希入门题
- C++编程思想学习-随笔记录(面向对象概念)
- 《Effective C++》Item6: 如果你不想使用编译器生成的函数,就该明确拒绝!
- 指针阅读技巧解析
- 复习C语言系列三:sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l
- C++成员函数的重载、覆盖与隐藏22
- C++运算符重载补充之不同数据间的类型转换
- VC++内存释放总结