转换构造函数

  • 实现类型的自动转换
  • 只有一个参数,而且不是拷贝构造函数的构造函数,一般就可以看作是这玩意
  • 编译器也是会自动生成的
  1. class A {
  2. public:
  3. Complex(int i) {}
  4. };
  5. main() {
  6. Complex A a= 2;
  7. a = 9;// 9被自动转换成一个临时A对象
  8. }

析构函数

  • 处理对象消亡后的断后工作!
  • 对象数组中的每个元素消亡时,每个元素的析构函数都会被调用

    delete

    ```cpp Ctest * pTest = new Ctest; delete pTest; // 调用析构函数

Ctest * pTest = new Ctest[2]; delete []pTest; // 调用两次

  1. <a name="4iYgy"></a>
  2. ### 函数返回值时调用
  3. ```cpp
  4. class A {
  5. public:
  6. ~A() {cout << "called" << endl;}
  7. };
  8. A fun(A obj) { // 临时对象消亡,调用一次
  9. return obj; // 也调用一次
  10. }
  11. int main()
  12. {
  13. obj = fun(obj);
  14. return 0; // 也调用一次
  15. }
  16. // 输出三次