목록cpp (43)
Nagie's DevStory
C++에서 복사 생성자는 객체의 생성 및 초기화에 사용된다. 복사 생성자는 하나의 객체가 다른 객체를 복사하여 생성될 때 호출되는 생성자이며 사용자가 따로 정의를 했다면 깊은 복사(deep copy)를 수행하기에 새로운 객체는 기존 객체와 동일한 데이터를 가지지만 독립된 메모리 공간을 사용한다. 요약하자면 다음과 같은 상황에서 호출된다. 1. 객체를 다른 객체로 초기화할 때 2. 객체를 함수에 전달할 때 (파라미터로 객체를 전달하거나 반환 값으로 객체를 반환할 때) 3. 객체를 다른 객체에 할당할 때 다음은 복사 생성자의 정의 방법이다. class MyClass { public: MyClass(const MyClass& other) { // 복사 생성자의 구현 } }; 특히 클래스 내부에 포인터 데이터 ..
class MyClass { public: int publicVar; // 외부에서 직접 액세스 가능 protected: int protectedVar; // 파생 클래스와 클래스 내부에서만 액세스 가능 private: int privateVar; // 클래스 내부에서만 액세스 가능 public: void publicFunction() { // ... } protected: void protectedFunction() { // ... } private: void privateFunction() { // ... } }; 접근 지정자는 클래스의 데이터 멤버나 멤버 함수의 접근 권한을 제어하는 데 사용되는 키워드다. 접근 지정자는 클래스 외부에서 클래스 멤버에 대한 접근을 제한하거나 허용하는 데 중요한 역할을..
객체지향 프로그래밍에서의 상속은 이미 정의된 클래스의 기능을 이어받아 새로운 클래스를 만들어 내는 행위를 말한다. 언어마다 상속받는 방법은 조금씩 다르지만, C++에서의 기본 상속 방법은 다음과 같다. class 기본클래스 { // 기본 클래스의 멤버 변수와 함수들 }; class 파생클래스 : public 기본클래스 { // 파생 클래스의 멤버 변수와 함수들 }; 상속은 :(콜론) 다음에 기본 클래스의 이름을 명시하는 것으로 시작한다. 파생 클래스는 기본 클래스의 모든 데이터 멤버와 멤버 함수를 상속받게 되며 파생 클래스 내에서 추가적인 데이터 멤버나 멤버 함수를 정의할 수 있다. 또한 상속받는 클래스의 접근 지정자는 public 말고도 private이나 protected를 사용할 수도 있지만. pub..
C에서의 static을 한번 떠올려 보자 static 키워드를 사용하면 함수 내부에서 선언된 변수는 정적 지역 변수로 정의되고 한 번만 초기화되며 함수가 호출될 때 매번 초기화되지 않고 값이 유지된다고 했고 정적 전역 변수 역시 선언한 해당 파일에서만 접근 가능하다고 우린 공부했을 것이다. 하지만 C++에선 이 static의 의미가 다르다. 클래스 내부에서 static 키워드를 사용해 정의된 멤버 변수는 해당 클래스의 모든 객체가 공유하며 사용하는 객체 전용의 전역변수 역할을 하게 된다. 아래는 정적 멤버 변수의 사용 예시다. #include class MyClass { public: static int sharedValue; }; int MyClass::sharedValue = 0; int main()..
friend 함수는 C++에서 사용되는 조금 특별한 함수다. 클래스의 멤버 함수가 아닌데 해당 클래스의 private 멤버에게 접근할 수 있도록 권한을 부여하는 함수며 이는 곧 클래스의 캡슐화(정보은닉)를 깨버리는 결과를 가져온다. 가능하면 안 쓰는 게 베스트지만 그래도 사용법은 알고 있어야지 특정 상황에서 선택의 여지가 없을 때 문제를 해결할 수 있을 거 같아 사용 예시를 올린다. #include class MyClass { private: int privateVar; public: MyClass(int value) : privateVar(value) {} // 클래스 외부에서 privateVar에 접근할 수 있도록 friend 함수 정의 friend void DisplayPrivateVar(const..