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;
}
'C++ > c++수업' 카테고리의 다른 글
소스파일cpp ,헤더파일h 분리 예제 (p136) (0) | 2020.10.19 |
---|---|
캡술화 private public (0) | 2020.10.19 |
cpp class 원넓이, 사각형면적 (0) | 2020.10.14 |
입력받는수의 합을 구하는 프로그램 (0) | 2020.10.13 |
QQ 중복 제거 하는중 - 간단한 로또 프로그램. (0) | 2020.10.13 |