#include <iostream>
using namespace std;
class A
{
public:
A()
{
}
virtual ~A()
{
};
public:
virtual void fun()
{
cout << "A::fun()" << endl;
}
virtual void fun2()
{
cout << "A::fun2()" << endl;
}
void test()
{
cout << "A::test()" << endl;
test2();
fun2();
}
void test2()
{
cout << "A::test2()" << endl;
}
};
class B:public A
{
public:
B()
{
}
virtual ~B()
{
}
public:
virtual void fun()
{
cout << "B::fun()" << endl;
test();
}
virtual void fun2()
{
cout << "B::fun2()" << endl;
}
void test1()
{
cout << "B::test1()" << endl;
test();
}
void test2()
{
cout << "B::test2()" << endl;
}
};
int main()
{
cout << "========== use pointer =============" << endl;
A* pa = new B();
pa->fun();
delete pa;
cout << endl << endl;
cout << "========== use object =============" << endl;
B b;
b.test1();
return 0;
}
执行结果
========== use pointer =============
B::fun()
A::test()
A::test2()
B::fun2()
========== use object =============
B::test1()
A::test()
A::test2()
B::fun2()
分享到:
相关推荐
C++虚函数表的测试代码,用于学习C++虚函数的调用关系。
介绍了C++编程语言中的虚函数及其在进行面向对象程序设计中重要性,并且详细阐述了它在编译器底层虚函数的实现机制.它通过一个vptr和vtable在运行时进行动态绑定,从而能够根据对象类型的不同调用不同的 虚函数;并...
一个小测试,可以认识到虚函数与多态性的认识
本文将简单探究一下 c++ 中的虚函数实现机制。本文主要基于 vs2013 生成的 32 位代码进行研究,相信其它编译器(比如,gcc)的实现大同小异。 先从对象大小开始 假设我们有如下代码,假设 int 占 4 字节,指针占 4 ...
抽象出一个基类Base,在其中说明一个虚函数,用来求面积,并利用但界面和多定义版本设计求各个图形面积的方法。 了解虚函数对多态性的支持。 掌握虚函数和纯虚函数的概念。 理解静态多态性和动态多态性,学习使用虚...
类有两个特殊的成员函数,构造函数和虚函数。N 8、类中提供了三种访问控制权:公有、私有、保护三种类型。Y 9、所谓继承就是利用已有的数据类型定义出新的数据类型。Y 10、静态成员函数没有 this 指针。Y 11、A 为类...
本资源为C++实验1-13,包含完整程序、注释、报告非常适合初学者学习、研究,具体如下: 实验1-熟悉Visual C++编程环境 实验2-利用函数编程 实验3-指针与引用的编程 实验4-类与对象的编程 实验5-构造函数与析构函数的...
一般将类的析构函数设置为纯虚函数即可将这个类定义为抽象类,抽象类中至少有一个纯虚函数(虚函数是指一个类中你希望重写的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际...
基础程序设计题:使用虚函数编写程序求球体和圆柱体的表面积和体积,由于球体和圆柱体都可以看做由圆继承而来,所以可以定义圆类circle为基类。在circle类中定义一个数据成员radius和两个虚函数area()和volume()。从...
2.定义一个车(Vehicle)类,有run,stop等成员函数,由此派生出自行车(bicycle)类、汽车(car)类,由bicycle类和car类派生出摩托车(motocar)类,它们都包含run,stop等成员函数,编写相应的虚函数并测试。...
8.5.3 虚函数的作用 8.6 总结 8.7 练习 复习题 附录A 学习使用Visual C++2005Express Edition 附录B C++关键字表 附录C C++运算符 附录D ASCII码 附录E 位、字节、内存和十六进制表示 附录F 文件输入/输出 附录G ...
用c++ 定义一个车(Vehicle)基类,有Run,Stop等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)类,从bicycle和 motorcar派生出摩托车(motorcycle)类,他们都有Run,Stop等成员函数。编写完整并用主函数测试...
17.1.6 函数测试块与构造函数 586 17.1.7 异常类层次 587 17.1.8 自动资源释放 589 17.1.9 auto_ptr类 591 17.1.10 异常说明 595 17.1.11 函数指针的异常说明 598 17.2 命名空间 599 17.2.1 命名空间的定义 599 ...
15.2.3 C++如何实现虚函数 457 第16章 模板 461 16.1 函数模板 461 16.2 类模板 471 16.2.1 类模板的语法 471 16.2.2 C++中的模板类vector和 basic_string 478 16.3 模板和继承 478 第17章 链式数据结构 487...
标准C++中的字符串类取代了C标准C函数库头文件中的字符数组处理函数。 C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。 C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和...
【题目】显示宠物信息。具体要求如下: (1)定义抽象宠物类Pet: 数据成员(protected): char name[20];...(4)编写主函数对所定义的类进行测试,要求每个成员函数均要测试到,测试数据自定。
9.6.3 使用引用处理虚函数 9.6.4 纯虚函数 9.6.5 抽象类 9.6.6 间接基类 9.6.7 虚析构函数 9.7 类类型之间的强制转换 9.8 嵌套类 9.9 C++/CLI编程 9.9.1 C++/CLI类的继承 9.9.2 接口类 9.9.3 定义接口类 9.9.4 类和...
9.6.3 使用引用处理虚函数 9.6.4 纯虚函数 9.6.5 抽象类 9.6.6 间接基类 9.6.7 虚析构函数 9.7 类类型之间的强制转换 9.8 嵌套类 9.9 C++/CLI编程 9.9.1 C++/CLI类的继承 9.9.2 接口类 9.9.3 定义接口类 9.9.4 类和...