본문 바로가기

c++ 멤버함수7

C++ 12 [복사생성자] ▣ 객체 복사 방법 : Player p2(p1), Player p2 = p1; ▣ 복사생성자 임의로 정의 : Player::Player(const Player& player) ▣ 객체복사 시 자동으로 복사생성자 호출 ▣ 위에 코드처럼 복사생성자를 임의로 정의하지 않을 경우 디폴트 복사생성자 호출 this->level = player.level; 처럼 기본적으로 원본객체의 멤버변수 포인터를 사본 this객체에 복사 ▣ 복사 생성자를 호출하여 임의로 복사된 객체의 값을 변경할 수 있다. ▣ 객체를 복사할 경우, 객체를 매개변수로 받아올 경우, 객체를 반환할 경우 자동으로 복사생성자를 생성하고 호출한다. 2023. 4. 6.
C++ 03 [클래스, 멤버변수, 멤버함수, 생성자, 소멸자, 접근지정자] ▣ 클래스 : 설계도, 틀 ▣ 객체 : 설계도로 생성된 완성품 ▣ 클래스 선언 : class 클래스이름 { }; , class 키워드를 앞에 붙여야 한다. ▣ 멤버변수 : 클래스내부에서 선언하는 변수 ▣ 멤버함수 : 반환형 클래스이름::멤버함수이름(매개변수){ } 순으로 생성한다. , (::)는 범위지정연산자 ▣ 접근지정자 : public: 클래스 내부, 외부 모두 접근이 가능한 접근지정자 ▣ 객체생성 : 클래스이름(자료형) 변수이름;으로 지정한다. 구조체를 생성하는 것과 동일하다. ▣ p1.Damage(50); 객체에 접근할 때에는. 점을 사용한다. ▣ 생성자 : 객체가 생성될 때 자동으로 한번 호출되는 함수, 생성자는 클래스 이름과 동일하게 작성해야 한다. 생성자는 리턴 타입 반환형을 선언하지 않는다.. 2023. 3. 10.
C++ [가상함수] ▣ 기본클래스, 파생클래스를 선언하고 각각 멤버함수를 선언합니다. 멤버함수의 이름은 동일하게 선언합니다. 그리고 메인함수에서 GameManager 객체의 포인터, Player 객체의 포인터를 각각 정의하고 위에 코드처럼 GameMaanger클래스의 주소로 접근하여 멤버함수를 호출하는 코드, Player클래스의 주소를 pGameManager 함수에 대입하여 멤버함수를 호출하는 코드를 작성합니다. ▣ 디버그를 해보면 둘 다 GameManager 클래스의 멤버함수가 호출되는 걸 확인할 수 있습니다. ▣ 그 이유는 정적바인딩으로 컴파일할 때 호출될 함수의 주소가 이미 결정해 버렸기 때문에 pGameManager = pPlayer; 이렇게 코드를 작성하더라도 부모의 함수가 호출됩니다. ▣ 이럴 때 가상함수(Vir.. 2023. 2. 22.
C++ 15장 [디폴트 매개변수] ▣ 안녕하세요. 이번장에서는 디폴트 매개변수(기본 매개변수)에 대해 공부해보겠습니다. 디폴트 매개변수는 말 그대로 매개변수를 기본으로 정의하는 걸 의미합니다. 코드를 작성하며 공부해보겠습니다. ▣ 클래스를 생성하는 코드를 작성해주시구요. 클래스에 멤버 함수를 생성해주세요. 멤버 함수 매개변수에 int n=10 이런 식으로 디폴트 매개변수를 정의합니다. 그리고 메인 함수에서 객체를 생성하고 c1.sum(), c1.sum(20) 이렇게 호출해주세요. 그럼 sum() 함수처럼 매개변수에 값을 전달하지 않아도 오류 없이 기본으로 지정되어 있는 10을 더한 값을 출력하고 sum(20) 함수 호출은 매개변수를 20으로 전달했기 때문에 디폴트 매개변수는 무시하고 내가 전달한 값 20을 저장하게 됩니다. 그리고 출력 .. 2022. 11. 11.
C++ 5장 [클래스3] ▣ 안녕하세요. 이번장에서는 클래스 3번째 시간으로 소멸자를 공부해보도록 하겠습니다. ▣ 소멸자는 객체가 소멸되는 시점에서 자동으로 호출되는 클래스 멤버 함수를 의미합니다. 저번장을 이어서 복습하면 생성자는 객체가 생성되었을 때 소멸자는 소멸되었을 때 호출하는 멤버 함수들입니다. 소멸자를 만들려면 클래스 이름 앞에 ~ 기호를 붙여야 합니다. 또 소멸자는 한 개만 존재해야 합니다. 만약 소멸자가 선언되지 않으면 기본 소멸자가 자동으로 생성됩니다. 그리고 소멸자는 리턴 타입이 없습니다. 생성자처럼 반환형이 없다는 의미입니다. 소멸자의 목적은 마무리 작업을 할 때 사용합니다. 그럼 코드를 작성하며 공부해보겠습니다. ▣ 소멸자를 생성하려면 ~Calculator() 코드에서처럼 클래스 앞에 ~ 기호를 넣으시면 됩.. 2022. 10. 7.
C++ [클래스_02, Class, get, set, 함수, 멤버함수, 멤버변수] ▣ 안녕하세요. 이번장에서는 저번장에 이이서 클래스에 get, set 함수를 만들어보도록 하겠습니다. 결론부터 이야기하면 get, set을 만드는 이유는 간단하게 이야기해서 클래스에 있는 멤버 변수를 접근하게 아니면 접근하지 못하게 구분하기 위한 함수라고 생각하시면 됩니다. 코드를 입력하면서 이야기를 이어가도록 하겠습니다. ▣ 저번장에서 공부했던 클래스 코드를 먼저 살펴보겠습니다. 클래스 멤버 함수 안에 조건문을 넣어서 잘못된 값을 멤버 변수에 대입하지 못하게 조건문을 넣은 코드입니다. 하지만 이 부분이 있더라도 game1.gameNumber = 10처럼 직접 멤버변수에 접근해서 대입을 하게 되면 무용지물이 되게 됩니다. 누구든 아무렇게나 멤버 변수를 접근할 수 있기 때문입니다. ▣ private 으로 .. 2021. 7. 21.
C++ [클래스_01, Class, 객체, 멤버변수, 멤버함수, 접근지정자] ▣ 안녕하세요. 이번장에서는 클래스를 공부해보겠습니다. 클래스는 C언어에 구조체 형식과 매우 비슷합니다. 쉽게 이야기해서 구조체 또한 변수, 배열, 함수를 구조화시켜서 한꺼번에 관리하기 위해 만든 구조입니다. 즉 클래스는 메모리를 하나에 객체화로 구조화 시켜 관리하기 위함입니다. 이해를 돕기 위해 코드를 하나하나 작성하면서 공부해보겠습니다. ▣ 클래스는 선언하려면 C언어에서의 struct 구조체와 동일하게 class 키워드로 선언을 합니다. 자료형 타입이라고 생각하시면 편하실 겁니다. class를 작성한 다음 옆에 클래스에 이름을 치고 {} 괄호로 클래스에 범위를 지정해주세요. 구조체와 함수에 형식과 동일합니다. 그런 다음 public: 접근지정자로 외부에서 접근할 수 있게 지정을 해줍니다. 이게 있어야.. 2021. 7. 20.