OOP

Friend는 private 클래스 멤버에 접근권한이 있는 함수 또는 클래스입니다. 여기서 해당 함수 또는 클래스는 접근하고자 하는 클래스의 멤버가 아닙니다. (접근하고자 하는 클래스의 속성 또는 메소드가 아닙니다.) 함수의 경우, 일반적인 함수 일 수도 있고, 혹은 다른 클래스의 멤버 메소드일 수 있습니다. 클래스일 경우, 접근하고자 하는 클래스의 모든 private 멤버들에 대한 접근 권한이 있는 클래스입니다. 한마디로, friend는 클래스의 모든 데이터에 접근 권한을 가진, 클래스 멤버가 아닌 외부 함수 또는 클래스입니다. friend 관계는 friend 키워드를 사용해서 함수 또는 클래스의 정의를 할 때 명시해야 합니다. 또한, friend 관계는 양방향성이 없습니다. A가 B의 friend라고..
C++에서는 클래스에도 상수 (const) 개념을 적용할 수 있습니다. const가 적용된 클래스는 속성(attribute)를 변경할 수 없습니다. 그렇다면 속성의 멤버 함수를 호출하면 어떻게 될까요? const Player villain {"Villain", 100, 55}; villain.set_name("Thanos");// COMPILER ERROR std::cout
C++ Class 의 Copy Constructor에는 default copy constructor이 사용하는 Shallow Copying과 Deep Copying이 있습니다. 일반적으로는 얕은 복사, shallow copying을 사용해도 괜찮지만, 얕은 복사가 문제를 야기할 때가 있습니다. 이번 포스트에서는 각각 방법을 정리해보겠습니다. Shallow Copying - 얕은 복사 Shallow copy는 컴파일러가 기본적으로 생성해주는 default copy constructor가 행하는 방법이기도 합니다. Shallow copying은 복사 대상의 객체의 모든 속성을 지닌 새로운 객체를 생성합니다. 여기서 주의해야 할 점은 포인터가 객체에서 사용될 때 입니다. 복사의 과정에서 포인터는 복사되지만, ..
객체는 꽤나 큰 메모리를 요구하기 때문에, Pass by value 방법 혹은 return 값으로 특정 객체를 활용하는 함수나 메소드는 큰 용량을 낭비하게 됩니다. 이럴 때, pass by reference 방법을 사용하면 이를 방지할 수 있습니다. // main.cpp #include "Practice.h" #include using namespace std; int main() { Player ricky("Ricky", 100, 0); Player super_enemy = create_super_enemy(); Player ricky2 = another_hero(ricky); return 0; } // Practice.cpp #include "Practice.h" #include #include us..
Ricky U. Lee
'OOP' 태그의 글 목록