C++虚函数深入测试
来源:互联网 发布:windows多线程互斥 编辑:程序博客网 时间:2024/06/04 19:39
前一段时间写的c++虚函数的测试小程序
#include<iostream>using namespace std;class Base{ public: Base() { cout << "Base " << endl; } ~Base() { cout << "~Base" << endl; } virtual void func1() { cout << "Base virtual func1" << endl; } void func3() { cout << "Base func3" << endl; }};class Derived : public Base{ public: Derived() : Base() { cout << "Derived" << endl; } ~Derived() { cout << "~Derived" << endl; } virtual void func1() { cout << "Derived func1" << endl; } void func2() { func1(); } void func3() { cout << "Derived func3" << endl; }};class Derived2 : public Derived{ public: Derived2() : Derived() { cout << "Derived2" << endl; } ~Derived2() { cout << "~Derived2" << endl; } virtual void func1() { cout << "Derived2 func1" << endl; } void func3() { cout << "Derived2 func3" << endl; }};int main(){ Derived *pobj = new Derived2(); pobj->func2(); //Derived2 func1 cout << "=======================" << endl; Derived2 obj; obj.func2(); //Derived2 func1 cout << "HHHHHHHHHHHHHHHHHHHHHHHHH" << endl; Derived objtemp; objtemp.func2(); //Derived func1 cout << "======================" << endl; Base *pbase = NULL; pbase = new Derived(); pbase->func3(); //Base func3 delete pbase; cout << "=====================" << endl; pbase = new Derived2(); pbase->func3(); //Base func3 delete pbase; cout << "EEEEEEEEEEEEEEEEEEEEEEEEEEE" << endl; return 0;}测试程序2
#include<iostream>using namespace std;class A{ //protected private: int num; public: A(int i=0) { num = i; } int getNum() { cout << "A----getNum!" << endl; return get(); } virtual int get() { cout << "A-----get()!" << endl; return num; }};class B : public A{ private: int num; public: B(int i=1) { num =i; } int get() { cout << "B-----get()" << endl; return num; }};class C : public B{ private: int num; public: C(int i=2) { num = i; }};int main(){ C c(10); cout << "--------------------------------" << endl; cout << "c.getNum()\t" << c.getNum() << endl; //1 cout << "--------------------------------" << endl; cout << "c.get()\t" << c.get() << endl; //1 cout << "--------------------------------" << endl; cout << "c.A::get()\t" << c.A::get() << endl; //0 cout << "--------------------------------" << endl; cout << "c.B::get()\t" << c.B::get() << endl; //1 cout << "--------------------------------" << endl; cout << "c.C::get()\t" << c.C::get() << endl; //1 cout << "--------------------------------" << endl; cout << "c.A::getNum()\t" << c.A::getNum() << endl; //1 cout << "--------------------------------" << endl; cout << "c.B::getNum()\t" << c.B::getNum() << endl; //1 cout << "--------------------------------" << endl; cout << "c.B::getNum()\t" << c.C::getNum() << endl; //1 cout << "--------------------------------" << endl; return 0;}结果自己分析,我这里就不贴出来了
0 0
- C++虚函数深入测试
- C 函数调用测试
- 深入理解C函数声明
- C语言_深入函数
- C语言函数深入理解
- C语言字符测试函数
- 【Linux C】字符测试函数
- 测试C语言中变参函数
- C语言字符函数测试
- Matlab测试C函数模块
- 深入解析虚函数
- 深入理解虚函数
- c函数之【字符测试函数】
- Linux C函数 第一章 字符测试函数
- 深入理解C/C++函数指针
- 全面深入介绍C语言字符串函数
- 深入理解C/C++函数指针
- 深入理解C/C++函数指针
- COCOS2DX-LUA脚本开发之Hybrid模式-利用AssetsManager实现在线更新脚本
- monit监控Linux系统
- 色可冽重金属捕捉剂伴侣ZP02
- ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值
- 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
- C++虚函数深入测试
- 选择文件或者文件夹处理函数
- phantomjs/casperjs动态传入参数
- hdu 3555 Bomb
- c# int与byte[]转换
- 【android 权限】
- eclipse快速打开文件所在位置
- acm-uva445(水题)
- centos下bash: XXX: command not found的解决方法