0
#include<iostream>
using namespace std;

class A {
  int k;
  int *ptr;
public:
  A(int a):k(a) { 
    cout<<"ctor\n";
    ptr = new int[k];
    for(int i = 0; i < k; i++) {
      *(ptr + i) = i*i*i;
    }
  }
  A(const A &obj) {
    cout<<"copy ctor\n";
    k == obj.k;
    ptr = new int[k];
    for(int i = 0; i < k; i++) {
      *(ptr + i) = i*i;
    }
  } 
  void show() {
    for(int i = 0; i < k; i++) {
      cout<<*ptr++<<" ";
    }
  }
};

A foo() {
  A temp(5);
  return temp;
}

int main() {
  A obj = foo();
  obj.show();
  return 0;
}

** foo() 返回的临时对象不会被复制。在 this 中调用普通构造函数,但不调用复制构造函数。谁能指出我到底哪里出错了。**

4

0 回答 0