右边的类对象决定查看的虚函数表..左边的类型调用非函数表
2014-04-26 02:19
337 查看
class A
{
public:
virtual void F1()
{
cout<<"A1"<<endl;
}
void F2()
{
cout<<"A2"<<endl;
}
};
class B :public A
{
public:
void F1()
{
cout<<"B1"<<endl;
}
void F2()
{
cout<<"B2"<<endl;
}
};
void main(){
A *pa;
B *pb;
B TB;
A TA;
pa = &TB;//基类指针指向派生类对象
pa->F1();
pa->F2();
pb =(B *) &TA;//派生类指针指向基类对象 查对象的虚函数表, 指针的类型决定函数
pb->F1();
pb->F2();
}
{
public:
virtual void F1()
{
cout<<"A1"<<endl;
}
void F2()
{
cout<<"A2"<<endl;
}
};
class B :public A
{
public:
void F1()
{
cout<<"B1"<<endl;
}
void F2()
{
cout<<"B2"<<endl;
}
};
void main(){
A *pa;
B *pb;
B TB;
A TA;
pa = &TB;//基类指针指向派生类对象
pa->F1();
pa->F2();
pb =(B *) &TA;//派生类指针指向基类对象 查对象的虚函数表, 指针的类型决定函数
pb->F1();
pb->F2();
}
相关文章推荐
- 虚函数,有的语言里也叫动态函数(DYNAMIC,相对于VIRTUAL),这里的虚,不是没有,而是说,调用对象的类型决定具体的函数。
- 【more effective c++读书笔记】【第5章】技术(7)——让函数根据一个以上的对象类型来决定如何虚化(1)
- 技术(7)——让函数根据一个以上的对象类型来决定如何虚化
- 【more effective c++读书笔记】【第5章】技术(7)——让函数根据一个以上的对象类型来决定如何虚化(1)
- 让函数根据一个以上的对象类型来决定如何虚化
- C++ Pirmer : 第十四章 : 重载运算符与类型转换之函数调用运算符与标准库的定义的函数对象
- 被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法
- 对象的引用调用private类型函数的问题
- 条款三十一:让函数根据一个以上的对象类型来决定如何虚化
- 【M31】让函数根据一个以上的对象类型来决定如何虚化
- 条款31 让函数根据一个以上的对象类型来决定如何虚化
- item31让函数根据一个以上的对象类型来决定如何虚化
- 【more effective c++读书笔记】【第5章】技术(7)——让函数根据一个以上的对象类型来决定如何虚化(2)
- const类型对象只能调用const类型函数
- 【more effective c++读书笔记】【第5章】技术(7)——让函数根据一个以上的对象类型来决定如何虚化(2)
- ajax调用webservice返回DataTable "序列化类型为“System.Reflection.Module”的对象时检测到循环引用
- this指针指向当前调用对象,只是用于类的非静态成员函数。静态函数和全局函数 无当前对象,无this指针。
- C++类对象内存模型与成员函数调用分析(下)
- Inside VCL:接口指针调用函数的时候,如何获得对象指针以完成函数调用?
- Python3学习笔记06-循环设计、循环对象、函数对象、错误处理、动态类型