클래스 생성자 및 복사 생성자 기본

다음 main 함수에서 객체 생성을 위해 필요한 모든 생성자를 포함하도록 Point 클래스를 작성하시오

 

int main()

{
    Point pt1;

    Point pt2(1);

    Point pt3(2, 3);

    Point pt4(pt3); //<--복사 생성자를 통해 구현 해 보는 것을 추천

    Point pt5(2, pt3); //p3의 좌표값 곱하기 2

 

    pt1.print_coords();

    pt2.print_coords();

    pt3.print_coords();

    pt4.print_coords();

    pt5.print_coords();

}

 

Point 클래스의 멤버 변수는 다음과 같다.

1. x축 정보 (int)

2. y축 정보 (int)

Point 클래스의 멤버 함수는 다음과 같다.

1. 점의 위치 초기화를 위한 생성자들

2. 점의 위치 출력 (print_coords())

 

Input & Output

입력은 없으며 출력은 아래와 같다.

[0, 0]

[1, 1]

[2, 3]

[2, 3]

[4, 6]





이게 문제인데 생성자 오버로딩 하려고 코드를 짰는데 

point::point를 class 본문에 안넣으면 빨간줄 그어지고 본문에 넣으면 오류뜨면서 실행이 안되는데

어떻게 고쳐야될지 모르겠습니다


#include <iostream>


class Point

{

private:

    int x , y;

    int a, b;

public:   

    Point() {};

    Point(int a) {};

    Point(int a, int b) {};

    Point(const Point& copy) {};

    Point(int a, const Point& copy) {};

    

    void print_coords()

    {

        std::cout<< "[" << x << ", " << y << "]" << std::endl;

    }


};


Point::Point() 

    : x{ 0 }, y{ 0 }

{

}

Point::Point(int a)

    : x{ a }, y{ a }

{

}

Point::Point(int a, int b)

    : x{ a }, y{ b }

{

}

Point::Point(const Point& copy)

{

}


Point::Point(int a, const Point& copy)

{

    x = a * x;

    y = a * y;

}


int main()


{

    Point pt1;


    Point pt2(1);


    Point pt3(2, 3);


    Point pt4(pt3); //<--복사 생성자를 통해 구현 해 보는 것을 추천


    Point pt5(2, pt3); //p3의 좌표값 곱하기 2




    pt1.print_coords();


    pt2.print_coords();


    pt3.print_coords();


    pt4.print_coords();


    pt5.print_coords();


}