전공 공부/C++

복사생성자

jeonnew 2021. 5. 20. 13:33
728x90
#include <iostream>
using namespace std;

class Circle {
private:
   int radius;
public:
   Circle(const Circle& c); // 복사 생성자 선언
   Circle() { radius = 1; }
   Circle(int radius) { this->radius = radius; }
   double getArea() { return 3.14 * radius * radius; }
};

Circle::Circle(const Circle& c) { // 복사 생성자 구현
   this->radius = c.radius;
   cout << "복사 생성자 실행 radius = " << radius << endl;
}

int main() {
   Circle src(30); // src 객체의  보통 생성자 호출
   Circle dest(src); // dest 객체의 복사 생성자 호출

   cout << "원본의 면적 = " << src.getArea() << endl;
   cout << "사본의 면적 = " << dest.getArea() << endl;
}

 

# 디폴트 복사 생성자

#include <iostream>
using namespace std;

class Circle {
private:
   int radius;
public:
   Circle() { radius = 1; }
   Circle(int radius) { this->radius = radius; }
   double getArea() { return 3.14 * radius * radius; }
};


int main() {
   cout << "2018305065 전유정" << endl;

   Circle src(30); // src 객체의  보통 생성자 호출
   Circle dest(src); // dest 객체의 복사 생성자 호출

   cout << "원본의 면적 = " << src.getArea() << endl;
   cout << "사본의 면적 = " << dest.getArea() << endl;
}

반응형