실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는 멤버 함수 print()를 갖는 클래스 Circle를 정의 2. main 함수에서 자료형이 Circle인 객체 c1을 선언하고, 멤버 함수 print()를 호출 */ #include <iostream> class Circle { double radius; public: void print() { std::cout << "원의 반경: " << radius << "\n"; } }; int main() { Circle c1; c1.radius = 1.0; // 문법 오류 c1.print(); }
실습과제 2번 /* 실습과제 1번에서 멤버 변수인 반경 radius는 private 변수들이므로 클래스 외부에서 값을 초기화할 수 없었다. 실습과제 2번에서는 생성자를 정의하고, 이것을 이용하여 객체 c1의 값을 초기화 한다. */ #include <iostream> class Circle { double radius; public: void print() { std::cout << "원의 반경: " << radius << "\n"; } Circle() : radius(0.0) {} Circle(double radiusVal) : radius(radiusVal) {} }; int main() { Circle c1, c2(3.0); c1.print(); std::cout << "-----------------------\n"; c2.print(); }
실습과제 3번 /* 실습과제 2번에 더해서 연산자 ‘+’를 중복 정의한다. */ #include <iostream> class Circle { double radius; public: void print() { std::cout << "원의 반경: " << radius << "\n"; } Circle() : radius(0.0) {} Circle(double radiusVal) : radius(radiusVal) {} Circle operator +(const Circle& c) const { return Circle(this->radius + c.radius); } }; int main() { Circle c1(3.0), c2(4.0), c3; c3 = c1 + c2; c3.print();
실습과제 4번 /* 클래스 ColoredCircle을 클래스 Circle로 부터 상속을 통해 정의한다. */ #include <iostream> #include <string> class Circle { // 부모 클래스 double radius; Public: void print() { std::cout << "원의 반경: " << radius << "\n"; } Circle(double radiusVal) : radius(radiusVal) {} }; Class ColoredCircle : Circle { // 자식 클래스 std::string color; public: void print() { Circle::print(); std::cout << "원의 색깔: " << color << "\n"; } ColoredCircle(double radiusVal, std::string colorVal) : Circle(radiusVal), color(colorVal) {}
실습과제 4번 계속 int main() { Circle c1(3.0); c1.print(); std::cout << "-----------------------\n"; ColoredCircle c2(3.0, "빨강"); c2.print(); }