C++对象构造语义学
1 对象赋值及析构语义学 1.1 对象复制 当我们没有写默认的拷贝构造函数并且不满足编译器为我们默认合成构造函数的条件,当我们拷贝构造一个对象时,编译器也会进行一些特殊的复制处理 EG: #include<iostream> using namespace std; class A { public: int a; }; int main() { A a; a.a = 1; A a1 = a; cout << a1.a << endl; //打印1 return 0; } 1.2 对象析构 在以下两种情况下,如果我们自己没有写析构函数,编译器会为对象合成析构函数: 继承的基类中有析构函数,编译器会为派生类合成一个析构函数调用基类的析构函数 存在某一个成员变量类型为类A(类A有析构函数) 2 new与delete探究 2.1 new后面加不加括号的区别 EG: #include<iostream> using namespace std; class A { public: int a; }; class B { public: B() { } int b; }; int main() { //对于类A,我们没有自己提供构造函数 /* A a; cout << a.a << endl; //会报错,使用未初始化变量 A a1 = A(); cout << a1.a << endl;