C++相关知识

  • new、delete是C++内建的操作符,无法重新定制

  • 指针删除和堆空间的释放。删除一个指针p(delete p),实际意思是指删除了p所指向的目标(变量或者对象)。释放了它所占的堆空间,而不是删除p指针本身(指针p并没有被撤销,它仍然占有内存空间),只是p指针变成了空指针

  • 内存泄漏和重复释放。new和delete是配对使用,delete只释放堆空间。如果new返回的指针值丢失,则分配的堆空间无法回收,称为内存泄漏,同一空间重复释放也是危险的,因为可能该空间已经被分配出去了,所以必须储存new返回的指针,保证不会发生内存泄漏和重复释放

  • 注意:

int b = 4; 
int a;
a = b;   //和下列不同
int a = b;   //上面是调用了拷贝赋值运算符重载函数,下面是运用了拷贝构造函数。
  • 当程序没有显式地提供一个以本类或本类的引用为参数的赋值运算符重载函数时,编译器会自动生成这样一个赋值运算符重载函数。
  • 构造函数还是赋值运算符重载函数
  • Ⅶ.显式提供赋值运算符重载函数的时机
    ①用非类A类型的值为类A的对象赋值时(当然,从Ⅵ中可以看出,这种情况下我们可以不提供相应的赋值运算符重载函数而只提供相应的构造函数来完成任务)。
    ②当用类A类型的值为类A的对象赋值且类A的成员变量中含有指针时,为避免浅拷贝(关于浅拷贝和深拷贝,下面会讲到),必须显式提供赋值运算符重载函数(如例1)。


    C++相关知识_第1张图片
    1-1

    C++相关知识_第2张图片
    1-2

你可能感兴趣的:(C++相关知识)