读书笔记:C++ 进阶心法

  • 默认构造函数,变量的值是随机值,字符串是空串
  • 类中有const类型的常量,不能构造函数中初始化,而需要在初始化列表中初始化
  • 多重继承,如果多重继承的基类是同一个,那么就会存在基类被复制多份的问题,需要使用虚继承解决
  • 因为会存在使用父类指针指向子类对象的情况,在调用析构函数时,如果父类的析构函数不是虚函数,那么在delete父类指针时,不会按照多态的方式而去调用子类对象的析构函数。所以,父类的析构函数需要写成虚析构函数
  • 常规的指针,是具有两个含义的,一个是地址,另一个是以什么变量类型的形式解释这个地址。而void * 类型的地址,只具有一个含义,就是地址。这样做的好处就是,任何类型都可以指向void,void也可以转化成任何类型。然而,计算机是不知道以什么类型解释这个地址的,因此需要我们显示的执行void * 的类型
  • new的对象是分配在堆上的(如果不使用placement new),这也是为什么我们在忘记delete的时候会存在内存泄漏的原因。因为是分配在堆上,而不是函数执行完毕自动回收的栈。

你可能感兴趣的:(读书笔记:C++ 进阶心法)