C++/class
-
[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++] 객체 생성과 메세징하는 다양한 방법C++/class 2022. 6. 29. 19:38
#include #include using namespace std; // Step 1. 클래스 생성 class Car { private: int speed; int gear; string color; public: //초기화 리스트 Car(int s = 0, int g = 1, string c = "white") : speed(s), gear(g), color(c) {} void display(); }; void Car::display() { cout
-
[C++] 생성자 안에서의 동적 메모리 할당C++/class 2022. 6. 28. 23:30
프로그램이 메모리를 할당받는 방법 1. 정적 메모리 할당 - 프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는 것 - 메모리의 크기는 프로그램이 시작하기 전에 결정되며, 프로그램의 수행 도중에 그 크기가 변경될 수 없음 - ex) int i, j; int buffer[80]; char name [] = "data structure"; 2. 동적 메모리 할당 - 프로그램이 실행 도중에 동적으로 메모리를 할당받는 것 - 프로그램에서 필요한 만큼 메모리를 할당받아서 사용하고, 사용이 끝나면 시스템에 메모리를 반납함 동적 메모리 할당 방법 1. 동적 메모리 할당 - new 키워드를 이용해서 동적으로 메모리를 할당함 - new가 반환하는 것은 할당된 메모리의 주소 - 반환값은 포인터에 저장해야 함 e..