C++
-
[C++] 상속과 생성자/소멸자C++/class 2022. 7. 8. 09:02
생성자는 객체가 생성될 때 자동으로 호출된다. 자식 클래스의 객체가 생성될 때, 부모 클래스의 생성자도 호출될까? 자식 클래스 생성자보다 부모 클래스의 생성자가 먼저 묵시적으로 호출된다. 단, 소멸자의 경우에는 역순으로 호출된다. 부모 클래스의 생성자를 호출하는 방법 Rectangle(int x = 0, int y = 0, int w = 0, int h = 0) : Shape(x, y){ width = w; height = h; } #include #include using namespace std; class Shape{ public: int x; int y; Shape(){ x = 0; y = 0; cout y = y; cout
-
[C++] friend 함수와 연산자 중복C++/class 2022. 7. 5. 00:32
💡 friend 함수란? 1. 멤버 함수가 아닌 일반 함수나 클래스에 한하여 클래스의 내부 데이터에 접근할 수 있도록 하는 것 2. 함수의 원형 앞에 friend 키워드(예약어)를 붙인다. 3. 프렌드 함수는 클래스의 멤버가 아니기 때문에 public이나 private의 영향을 받지 않는다. 4. 프렌드 함수의 원형은 클래스 안에, 함수의 구현은 외부에서 따로 정의된다. 5. 예시 1) 날짜 비교.cpp (두 개의 객체 비교) #include #include using namespace std; class Date{ //프렌드 함수 원형 선언 friend bool isEqual(Date d1, Date d2); private: int year; int month; int day; public: Date(..
-
[C++] 클래스의 사용 관계, 포함 관계C++/class 2022. 7. 1. 09:33
사용 관계 클래스 A의 멤버 함수에서 클래스 B의 멤버 함수들을 호출한다. 💡클래스 B의 멤버 함수를 호출하려면 클래스 B의 객체를 가지고 있어야 한다. ClassA::func(){ ClassB obj; obj.func(); ... } 포함 관계 하나의 객체 안에 다른 여러 객체들이 포함될 수 있다. 클래스는 다른 클래스의 객체를 멤버로서 가질 수 있다. #include #include using namespace std; // ================시간 클래스 생성================ class Time{ private: int hour; int minute; int second; public: Time(); //묵시적 생성자 Time(int h, int m, int s); //명시적 ..
-
[C++] 객체 배열C++/class 2022. 7. 1. 08:56
💡 객체 배열 : 배열의 요소가 객체인 경우 선언 방법: 클래스명 배열명 [크기] 생성자가 있는 클래스의 경우 객체 배열 선언과 동시에 각 객체 초기화가 가능하다. #include #include using namespace std; class Car{ private: int speed; int gear; string color; int id; public: //정적 멤버 변수 static int numberOfCars; Car(int s = 1, int g = 2, string c = "white") : speed(s), gear(g),color(c){} void display(); }; void Car::display(){ cout
-
[C++] 객체의 동적 생성C++/class 2022. 7. 1. 00:50
정적 메모리 할당으로 객체 생성 동적 메모리 할당으로 객체 생성 Car myCar; Car *pCar = new Car(); pCar은 동적 생성된 객체의 주소를 저장한다. 객체 포인터의 메세징 방법: -> arrow 연산자 이용 #include #include using namespace std; class Car{ private: int speed; int gear; string color; public: Car(int s = 0, int g = 1, string c = "grey") : speed(s), gear(g), color(c){} void display(); }; void Car::display(){ cout
-
[C++] ⭐️복사 생성자가 호출되는 경우C++/class 2022. 7. 1. 00:46
복사 생성자가 호출되는 경우 1. 기존의 객체 내용을 복사해서 새로운 객체를 만드는 경우 2. 객체를 함수의 매개 변수로 전달하는 경우 3. 객체를 값으로 반환하는 경우 객체를 함수의 매개 변수로 전달하는 경우 #include #include using namespace std; //1. 클래스 생성 class Student { private: char* name; int id; public: //얕은 복사 생성자 Student(const char *n, int i){ name = new char[strlen(n)+1]; strcpy(name, n); id = i; } //깊은 복사 생성자 Student(Student &s){ name = new char[strlen(s.name)+1]; strcpy(n..
-
[C++] 클래스 작성 연습.cppC++/문제풀이 2022. 6. 30. 16:22
문제 1. 상품의 재고를 나타내는 클래스를 작성하여 보자. 클래스 안에 상품 번호, 재고 수량이 멤버 변수로 저장되고 재고를 증가, 감소하는 멤버함수를 작성하여 보라. #include using namespace std; class Product{ public: //멤버 변수 정의 int id; int numOfProduct; //멤버 함수 정의 void ProductAdd(){ numOfProduct++; } void ProductMinus(){ numOfProduct--; } Product(int i = 202112454, int nop = 23) : id(i), numOfProduct(nop){} }; int main(){ Product obj_product; cout
-
[C++] Date, Employee.cpp (클래스의 포함 관계)C++/문제풀이 2022. 6. 30. 14:34
Power C++ (p. 488) 문제 날짜를 나타내는 Date 클래스를 정의하라. Date 클래스는 year, month, day를 멤버 변수로 가지며 생성자와 소멸자도 가진다. 이어서 직원을 나타내는 Employee 클래스를 정의한다. Employee 클래스는 직원의 이르과 직원의 생일, 직원의 입사일을 가지고 있다. 생일과 입사일은 Date 객체로 표현된다. Employee 클래스의 생성자는 이름, 생일, 입사일을 매개 변수로 받는다. #include #include using namespace std; // ================ ================ // Step 1. class 생성 class Date { private: int year; int mont..