목록C++ (56)
Minwoo Dev.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bEAyb9/btsHmyuxE5P/ks201ENiE5a5nUQmeXy0c1/img.png)
문제 1Point 클래스에 대해서 다음 조건을 만족하는 형태로 - 연산자를 오버로딩 해보자.전역함수 기반으로 오버로딩멤버 별 - 연산의 결과를 담은 Point 객체 반환 정답소스 코드#include using namespace std;class Point{private: int xpos, ypos;public: Point(int x = 0, int y = 0) : xpos(x), ypos(y) {} void ShowPosition() const { cout 실행 결과 문제 2Point 클래스에 대해서 다음 조건을 만족하는 형태로 += 연산자와 -= 연산자를 오버로딩 해보자.멤버함수 기반으로 오버로딩연산 'pos1 += pos2'의 결과로 pos1의 멤버변수 값이 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/l4O8b/btsHa1P0ybs/o9bZJk8Sbdd093NhigXGS0/img.png)
예제 Employeemanager4.cpp를 확장하여 다음 특성에 해당하는 ForeginSalesWorker 클래스를 추가로 정의해보자. Employeemanager4.cpp#include #include using namespace std;class Employee{private: char name[50];public: Employee(char *name) { strcpy(this->name, name); } void ShowYourName() const { cout ShowSalaryInfo(); } void ShowTotalSalary() const { int sum = 0; for (int i = ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/N0nIb/btsGBiTK5JB/jXjLlV7ot0ykWU7wpwkot0/img.png)
문제 1 정사각형을 의미하는 Square 클래스와 직사각형을 의미하는 Rectangle 클래스를 정의하고자 한다. 그런데 정사각형은 직사각형의 일종이므로, 다음의 형태로 클래스의 상속관계를 구성하고자 한다. class Rectangle{ .... }; class Square : public Rectangle{ .... }; 이에 다음 main 함수와 함께 실행이 가능하도록 위의 클래스를 완성해보자. 참고로 상속을 한다고 해서 유도 클래스에 무엇인가를 많이 담아야 한다는 생각을 버리자. [main 함수] int main(void) { Rectangle rec(4,3); rec.ShowAreaInfo(); Square sqr(7); sqr.ShowAreaInfo(); return 0; } 실행의 예 면적 :..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qNGoa/btsGCpdsWrQ/iiM2prMNBuFRwZENZ7rbDK/img.png)
문제 1 앞서 상속관계에 놓여있는 클래스의 생성자 정의 및 호출 방식에 대해 설명하였다. 이 내용을 바탕으로 다음 클래스에 적절한 생성자를 삽입해보자. 그리고 이의 확인을 위한 main 함수를 적절히 정의해 보자. class Car { private: int gasolineGauge; public: int GetGasGauge() { return gasolineGauge; } }; class HybridCar : public Car { private: int electricGauge; public: int GetElecGauge() { return electricGauge; } }; class HybridWaterCar : public HybridCar { private: int waterGauge; p..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1VrIK/btsF2OkEHbG/wgnFB5tdpOggb1fCBsFqq1/img.png)
this C++에서 this는 해당 객체 자체를 참조하는 포인터이다. 객체 내에서 본인이 가지고 있는 멤버변수나 멤버 함수에 접근하기 위하여 this를 많이 사용한다. #include using namespace std; class Score { private: int schoolNum; int score; public: Score(int schoolNum, int score) { this->schoolNum = schoolNum; // this 사용!! this->score = score; // this 사용!! } void showInfo() { cout score = score; } void showInfo() { cout
객체 포인터 배열 클래스를 이용하여 객체를 생성할 때, 배열의 형태로도 생성할 수 있다. MyClass myclass[4]; // MyClass라는 클래스로 생성한 객체 배열 myclass 위처럼 MyClass 클래스를 이용하여 myclass라는 객체를 배열의 형태로 생성할 수 있다. 예제 코드를 보자. #include #include using namespace std; class MyFamily { private: char *name; int age; public: MyFamily(char *_name, int _age) // 생성자 { name = _name; age = _age; } MyFamily() // 생성자 { name = NULL; age = 0; } void ShowInfo() { cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/clLX9M/btsF3CYceuc/UrVUslnLktfICFQT7fa7Sk/img.png)
소멸자(Destructor) 생성자가 객체의 생성과 함께 호출되는 것이었다면 소멸자는 객체의 소멸과 함께 호출되는 함수이다. 생성자의 이름이 클래스의 이름과 같아야 했던 것과 똑같이, 소멸자의 이름도 클래스의 이름과 동일해야 한다. 다른 점이라면 앞에"~" 가 붙는다는 것이다. ~클래스이름(){ 객체가 소멸될 때 실행할 코드 } ~생성자 이름() 과 같은 형식으로 소멸자를 선언한다. #include using namespace std; class Myclass { private: char *name; int score = 0; public: Myclass(char *username, int _score) { int len = strlen(username) + 1; name = new char[len]; ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cHFe31/btsFSb7xcFf/hMx4IDespwQEkhW8RYRC7K/img.png)
디폴트 생성자(Default Constructor) #include using namespace std; class MyClass { private: int num; public: // 생성자 없음!!!! void SayHi() { cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/o2ZMw/btsFRkKKAS6/Jkd7hHXcV5eSDmKZkyX9Xk/img.png)
생성자(Constructor) 생성자는 객체 생성 시 호출된다 함수의 일종이라 오버로딩이 가능하다. 함수의 일종이라 디폴트 값을 선언해줄 수 있다. 생성자를 사용하면 클래스를 이용하여 객체를 생성할 때, 객체의 생성과 동시에 초기화가 되게 할 수 있다. #include using namespace std; class MyClass { private: int num; public: MyClass(int n) // 생성자!!!! { num = n; } void ShowNum() { cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bwKC3n/btsFQS1RJAX/HntEGh3gOn95Ehe790APM0/img.png)
x와 y 에 대한 점을 나타내는 Myclass라는 클래스가 있다고 하자. 보통 생성자를 통하여 값을 전달받아 사용하는 방식으로 코드를 작성하면 아래와 같을 것이다. #include using namespace std; class Myclass { private: int x; int y; public: Myclass(int xpos, int ypos) { x = xpos; y = ypos; } void ShowPoint() const { cout