delete[]的析构顺序
先说一个小发现,在delete []的时候,是按照与构造顺序相反的顺序来析构的!(原来的构造顺序指的是,new []的时候,是按照下标顺序构造的)
#include <iostream>
using namespace std;
class Log
{
public:
void setId(int id) {
this->id = id;
}
~Log() {
cout << "Destruct " << id << endl;
}
private:
int id;
};
int main() {
Log* logs = new Log[4];
for (int i = 0; i < 4; ++i)
logs[i].setId(i);
delete [] logs;
return 0;
}
上面代码的输出结果为:
Destruct 3
Destruct 2
Destruct 1
Destruct 0
引用变量的大小
据说编译器内部是通过“常量指针”来实现引用的,首先从它的大小来看一下: