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

C++随笔(一)

2014-03-16 11:43 162 查看
1、

C++中对数据成员中的const值或者引用的初始化必须放在初始化列表,因为这两种数据只能初始化一次,而初始化列表是数据被初始化的地方。

2、

如果不想让一个类提供拷贝函数,则将拷贝函数声明为private,且不做实现。这样可以阻止继承类和友元调用拷贝函数。当继承类的拷贝函数工作时,会调用基类的拷贝函数,如果基类的拷贝函数是private的,就会编译报错。

3、多态

C++ specifies that when a derived class object is deleted through a pointer to a base class with a non-virtual destructor, results are undefined.What typically happens at runtimes is that the derived part of the
object is never destroyed.通过一个基类指针去析构一个继承类的对象时,会先调用继承类的析构函数,再调用基类的析构函数,因此你,析构函数都要有函数体,否则编译报错。

基类中含有虚函数,是为了继承类重写。当一个基类含有虚函数(析构函数以外),通常需要一个虚析构函数。如果一个类不含有虚函数,则不要使用虚析构函数。

如果想声明一个抽象类,最好的办法就是把析构函数声明为纯虚函数。

4、防止析构函数抛出异常

C++中abort()和exit()的区别:

 
  按面向对象的思想,程序也是一个对象,因此,程序也有生有死。
C++在编译一个程序后,这样执行程序:(1)执行开工函数,此时对
程序初始化,主要指全局变量初始化。(2)调用main函数。(3)执行
收工函数,对全局变量(对象)进行析构。所以如下程序会有输出,
尽管main函数为空:
    #include <stdio.h>
    int  x=printf("ABCDEF");
    void main( ){ }
    现在,来谈abort和exit以及return的区别。return返回,可析构
main或函数中的局部变量,尤其要注意局部对象,如不析构可能造成
内存泄露。exit返回不析构main或函数中的局部变量,但执行收工函数,
故可析构全局变量(对象)。abort不析构main或函数中的局部变量,也不
执行收工函数,故全局和局部对象都不析构。
    所以,用return更能避免内存泄露,在C++中用abort和exit都不是好
习惯。

为了避免在析构函数中抛出异常,可以在在try...catch中使用

std::abort()终止异常的抛出,或者在catch语句中什么也不做,将异常信息吞掉,但这样的做的前提是确保程序忽略这个异常可以继续正常运行。

5 、不要在构造函数和析构函数中调用虚函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: