전체 글
-
[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..
-
[C++] static_member.cppC++/clone code 2022. 6. 30. 10:34
인스턴스 변수 1. 객체가 생성될 때 각각의 객체들은 자신만의 멤버 변수들을 가진다. -> 인스턴스 변수 2. 인스턴스 변수들은 별도의 기억 공간을 가지고 있다. 정적 멤버 변수 static 자료형 변수 이름; 1. 정적 변수는 모든 객체에 공통인 변수가 필요할 때 사용한다. 2. 정적 변수의 실제 정의는 반드시 클래스 외부에서 해야한다. 3. 정적 변수는 객체를 만들지 않고서도 접근될 수 있다. Car :: numberOfCars = 100; c2.numberOfCars = 100; 정적 멤버 함수 1. 인스턴스 변수 사용(X), 정적 변수와 지역 변수만 사용할 수 있다. 2. 정적 멤버 함수에서 정적 멤버 함수를 호출하는 것은 가능하다. 3. this 포인터를 사용할 수 없다. car.cpp 예제 #..
-
[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++] student.cpp (복사 생성자의 개념)C++/clone code 2022. 6. 29. 00:07
복사 생성자 다른 객체의 내용을 복사해서 새로운 객체를 초기화하는 것 복사 생성자는 자신과 같은 타입의 객체를 매개 변수로 받음 얕은 복사 복사 생성자가 정의되어 있지 않은 경우 컴파일러가 알아서 디폴트 복사 생성자를 추가해줌 Car c1(0, 1, "grey"); Car c2(c1); 얕은 복사의 문제점 #include #include using namespace std; class Student { private: char* name;// 이름 int number;// 학번 public: //생성자 Student(const char* pn, int n) {//const 빠지면 컴파일 오류! name = new char[strlen(pn) + 1];//+1은 null문자 포함한 크기 strcpy(nam..
-
[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..