1、C++this指针干什么用的?
- 1个类型定义的对象都有各自的成员变量,但是是共享一套成员方法,在成员方法里,具体访问谁的成员变量,这个是靠this指针区分的。
- 1个类型定义了很多对象,都是私有的成员变量,但是共享一套成员方法,在成员方法里面访问谁的成员变量?通过this指针区分。
- C++的类的普通成员方法在被编译的时候都会多出来一个this指针。
2、C++的new和delete,什么时候用new[]申请,可以用delete释放?
- new和delete本质上是一个运算符重载。operator new,operator delete
- 当我们用new[]来开辟一个数组内存的时候,相应的在释放这个内存的时候得使用delete[]ptr;
- delete相当于free有两件事情要做:第一个是调用析构函数,第二个是释放内存。
- 如果是自定义类型而且提供了析构函数,那么用new[]开辟,就一定需要用delete[]ptr释放。
- delete[]知道是要释放一个数组内存,就要把数组的每个对象进行析构,然后调用析构函数的时候要传入每个对象的起始地址,就要知道这个内存上有多少个对象,需要把ptr指针-4,才能取到这块内存存储了多少个对象的值。
- 比如说,new Test[10]; 实际上除了开辟10个Test对象的内存,还需要额外开辟4字节的内存,记录开辟对象的个数。new底层调用malloc开辟内存。
- 其他的情况,都可以用delete释放。