学习笔记|C++类的几个概念

周四去面试,C++很长时间不用,加之C#的使用,很多基本的概念都给搞混了,根据面试的题目,看看书,写出下面的测试程序。其中包括构造函数、拷贝构造函数、析构函数、虚析构函数、动态绑定等,以注释的形式说明,不妥之处还望指正。
【学习笔记|C++类的几个概念】// COO.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include class Base { public: // 默认构造函数,构造函数不能定义为虚函数,因为构造函数调用时对象还未完全构造出来 Base() { cout<<"Base constructor!"<Foo(); pBase->Bar(); // 派生类指针指向派生类的对象,调用派生类的函数,不发生动态绑定 pDrived->Foo(); pDrived->Bar(); // 基类指针指向派生类的对象,Foo为虚函数,调用派生类的函数,发生动态绑定 pBase1->Foo(); // 强制调用基类的函数,在编译时确定,不进行动态绑定 pBase1->Base::Foo(); // Bar不为虚函数,调用的为基类定义的函数,不发生动态绑定 pBase1->Bar(); // 此处测试析构函数,如果析构函数定义为虚函数,则删除基类指针指向的派生类时 // 发生动态绑定,执行派生类的析构函数,如果定义为非虚函数,则执行基类的析构函数 Base *pBase2= new Drived(); delete pBase2; // 此处测试拷贝构造函数,定义派生类的拷贝构造时需要显式调用基类的拷贝构造函数, // 否则调用基类的默认构造函数 Base *pBase3 = new Drived(drivedObj); delete pBase3; return 1; }

    推荐阅读