C++ 小复习
2014-09-22 08:32
295 查看
(1)当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。所以这里要注意函数里面的sizeof运算符。
(2)打印出当前源文件的文件名以及源文件的当前行号: cout << __FILE__ ; cout<<__LINE__ ; __FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。
(3)如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
(4)C++虚析构函数的作用:当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。
View Code
上面是输出,先调用派生类的析构函数,再调用基类的构造函数,满意。但是如果去掉了基类的virtual,那么输出为:
可以看出没有调用派生类的析构函数,只调用了基类的析构函数。
(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
可以看出没有调用派生类的析构函数,只调用了基类的析构函数。
相关文章推荐
- 复习了一下c/c++的成果
- 使用C++编写类似MFC的CString,部分功能,重新复习使用操作符重载
- C++复习 10 关联容器
- 复习笔记二 二叉排序树(C++ C#)
- C++ 的复习 - 资料都是网络转载
- 今天复习C++的const,又学到了很多内容,总结一下[原创]
- C++复习 11 泛型算法
- C++复习 15 面向对象编程
- 数据结构复习:几种排序算法的C++实现和二叉树的相关算法实现
- c++复习笔记--c++语言程序设计题典
- C++复习 03 标准库类型
- C++复习 07 函数
- C++复习 09 顺序容器
- C++复习 04 数组和指针
- 标准C++复习&学习笔记
- C++复习--本人写的Josephus问题
- C++复习 02 变量和基本类型
- C++复习 12 类
- 【复习笔记】C++复习笔记一
- 复习C++中的几个不常用关键字