본문 바로가기
C++/c++수업

생성자

by sj0020 2020. 10. 14.
class Circle {
	Circle(); //생성자 이름 = 반드시 클래스 이름과 동일
	Circle(int r); // 리턴타입 명기하지 않음
};

Circle::Circle(){ //매개변수 없는 생성자

}

Circle::Circle(int r){ // 매개변수를 가진 생성자

}

2개의 생성자 중복 선언 : 오버로딩

단 매개변수가 다를 경우

 

매개변수 없는 생성자  : 디폴트

 

Circle();

Circle(int r);

메소드 오버로딩 (중복정의) - 객체지향언어에서 볼 수 있는 특징

 

 

#include <iostream>
using namespace std;

class Circle {
public: 
	int radius;
	Circle(); // 기본 생성자. 생성자는 타입이 없음.
	Circle(int r); // 매개 변수 있는 생성자
	double getArea();
};

Circle::Circle() {
	cout << "기본 생성자 호출\n";
	radius = 1;
	cout << "반지름 " << radius << "인 원 생성" << endl;
}

Circle::Circle(int r) {
	cout << "생성자 호출\n";
	radius = r;
}

double Circle::getArea() {
	return 3.14 * radius * radius;
}

int main() {
	Circle donut; //객체 생성
	cout << "donut 면적은 " << donut.getArea() << endl;

	//Circle pizza(30);
	//double area = pizza.getArea();
	//cout << "pizza 면적은 " << area << endl;
}

 

#include <iostream>
using namespace std;

class Circle {
public: 
	int radius;
	Circle(); // 기본 생성자. 생성자는 타입이 없음.
	Circle(int r); // 매개 변수 있는 생성자
	double getArea();
};

Circle::Circle() {
	cout << "기본 생성자 호출\n";
	radius = 1;
	cout << "donut 면적은 " << getArea() << endl;
}

Circle::Circle(int r) {
	cout << "생성자 호출\n";
	radius = r;
}

double Circle::getArea() {
	return 3.14 * radius * radius;
}

int main() {
	Circle donut; //객체 생성

}

 

#include <iostream>
using namespace std;

class Circle {
public: 
	int radius;
	Circle(); // 기본 생성자. 생성자는 타입이 없음.
	Circle(int r); // 매개 변수 있는 생성자
	double getArea();
};

Circle::Circle() {
	cout << "기본 생성자 호출\n";
	radius = 1;
	cout << "donut 면적은 " << getArea() << endl;
}

Circle::Circle(int r) {
	cout << "생성자 호출\n";
	radius = r;
}

double Circle::getArea() {
	return 3.14 * radius * radius;
}

int main() {
	Circle donut; //객체 생성

	Circle pizza(30);
	double area = pizza.getArea();
	cout << "pizza 면적은 " << area << endl;
}

pizza(30)에서는 30의 값을 바로 던져줌.

donut 보다는 pizza(30) 의 방법을 더 많이 쓴다.

 

아래로도 쓸 수 있따

Circle::Circle() : radius (1) {
	cout << "기본 생성자 호출. =객체가 만들어 졌다.\n";
	//radius = 1;
	cout << "donut 면적은 " << getArea() << endl;
}

 

 

#include <iostream>
using namespace std;

class Square {
public:

};

int main() {
	Rectangle rect1;
	Rectangle rect2(3,5);
	Rectangle rect3(3);

	if (rect1.isSquare()) cout <<"rect1 is square."<< endl;
	if (rect2.isSquare()) cout << "rect2 is square." << endl;
	if (rect3.isSquare()) cout << "rect3 is square." << endl;
}