您的位置:首页 > 编程语言 > C语言/C++

C++ 小复习

2014-09-22 08:32 295 查看
(1)当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。所以这里要注意函数里面的sizeof运算符。

(2)打印出当前源文件的文件名以及源文件的当前行号: cout << __FILE__ ; cout<<__LINE__ ; __FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。

(3)如何判断一段程序是由C 编译程序还是由C++编译程序编译的?

#ifdef __cplusplus
cout << "C++";
#else
cout << "C";
#endif // _cplusplus


(4)C++虚析构函数的作用:当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。

#include <iostream>

using std::cout;
using std::endl;
using std::cin;

class Base
{
public:
Base() {}
virtual ~Base(){ cout << "base detruction"; }
};

class Derived : public Base
{
public:
Derived() : Base() {}
~Derived() { cout << "derived destruct\n"; }
};

int main(void)
{
Base* pBase = new Derived;
delete pBase;

cin.get();
}


View Code

derived destruct
base detruction


上面是输出,先调用派生类的析构函数,再调用基类的构造函数,满意。但是如果去掉了基类的virtual,那么输出为:

base detruction


可以看出没有调用派生类的析构函数,只调用了基类的析构函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: