Функция возврата объекта не выполняет глубокое копирование. Почему temp, возвращаемая функцией foo(), не копируется глубоко?

#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;
}

** Объект temp, возвращаемый функцией foo(), не копируется. В этом вызывается обычный конструктор, но не конструктор копирования. Может кто-нибудь указать, где именно я иду не так.**

0 ответов

Другие вопросы по тегам