목록전체 글 (382)
Priv's Blog
1. C++의 상속 C++는 OOP 언어의 핵심 중 하나인 '상속' 기능을 지원합니다. C++은 다중 상속을 지원하며, 상속 시 접근 제한자를 이용해 여러 타입의 상속을 구현하는 것도 가능합니다. class Mother { public: Mother() { }; void sayHi() { cout
1. ScriptableObject ScriptableObject는 Unity에서 데이터를 관리하는 컨테이너 중 하나로, 값의 사본이 불필요하게 많이 생성되는 것을 방지하여 메모리 사용량을 절약하는데 유용하게 사용됩니다. 세 종류의 몬스터가 서로 같은 체력과 공격력을 가지고 있다고 가정하면, 각각의 프리팹이 개별적인 데이터를 지니고 있기 때문에 몬스터의 수가 늘어나면 그만큼 사본의 수도 늘어나 메모리가 크게 낭비됩니다. 하지만 ScriptableObject를 사용하면, 게임 내 모든 몬스터가 하나의 ScriptableObject 데이터를 참조하여 사용하기 때문에 아무리 몬스터의 수가 늘어나도 사본의 수는 늘어나지 않습니다. 2. 에디터 버전과 빌드 버전은 다르다. Unity 에디터 상에서 Scriptab..
1. 헷갈린다. 사진으로 깔끔하게 정리한 자료가 있어서 올려둔다. 헷갈려... 수고하셨습니다!
1. friend 키워드 friend 키워드는 수평적인 관계에 위치한 클래스 간의 멤버 변수를 공유하기 위해 주로 사용되는 키워드입니다. 타 클래스 내부에 접근하여 제한적으로 필요한 멤버 변수를 불러오는 기능을 하며, 확장성을 키울 수 있다는 장점이 있지만 캡슐화를 무시하므로 스파게티 코드가 만들어질 위험성이 따라옵니다. #include using namespace std; class People { private: string name; int age; public: string getName(); int getAge(); void setName(string name); void setAge(int age); string editInfo(string name, int age); void sayAge(P..
1. 클래스 데이터와 연산을 분리하면 데이터를 다양한 방식으로 활용할 수 있다는 장점이 있습니다. 클래스는 사용자가 메모리 표현에 접근하지 못하게 하여 타입을 더 쉽게 사용하고, 데이터를 일관되게 사용하여 메모리 표현을 보다 쉽게 개선하기 위해 활용됩니다. 이를 위해서는 모두가 접근해 사용할 수 있는 타입의 인터페이스와 외부에서는 접근할 수 없도록 제한하는 타입의 구현을 분리해야 하는데, 여기서 클래스가 등장합니다. 클래스는 일련의 멤버를 포함하며, 데이터나 함수, 타입을 멤버로 가질 수 있습니다. 인터페이스는 외부에서의 접근을 허용하므로 public으로 정의되며, private 멤버는 인터페이스를 통해서만 접근이 가능합니다. class Vector { public: Vector(int s) : elem..
1. 함수의 반환 값과 구조화된 바인딩 함수는 값을 반환할 수 있으나, 무조건 1개의 값만 반환할 수 있습니다. 하지만 함수의 반환값은 많음 멤버를 포함하는 객체 1개일 수도 있습니다. Python에서 다루는 튜플(Tuple)처럼 여러 값을 묶어 하나의 객체로 다루는 기능을 C++에서도 제공합니다. #include using namespace std; struct Entry { string name; int value; }; Entry read_entry(istream& is) { string s; int i; is >> s >> i; return {s, i}; } int main() { cout
1. 하드웨어 친화적인 C++ C++는 하드웨어에 대한 직접적인 대응을 제공하는 언어입니다. 기본적인 연산자들은 하드웨어가 제공하는 기능으로 구현되어 있으며, 대부분 기계어 하나로 처리됩니다. 하드웨어가 제공하는 기능이나 기계어 하나로 처리된다는 부분에 대한 이론적인 개념은 컴퓨터 구조 또는 운영체제를 참고하면 됩니다. 만약, int x와 int y를 더하는 x + y 연산을 명령한다면 이는 머신 명령어(instruction) 하나로 처리됩니다. C++의 구현은 머신의 메모리를 일련의 메모리 위치라는 관점에서 바라보며, 그 메모리 위치에 객체를 저장, 포인터로 가리키는 형태로 동작합니다. 위 사진에서 p의 값은 현재 포인터로 가리키고 있는 3이 됩니다. v는 배열처럼 보이지만, 실제로는 C++가 메모리상..
1. auto 타입 C++ 에는 변수를 선언할 때, auto라는 타입을 사용할 수 있습니다. 변수를 선언할 때 초깃값으로부터 타입을 유추할 수 있을 경우, auto를 사용하면 알아서 타입이 변환되는 형식입니다. auto를 사용할 때는 문제를 야기하는 타입 변환의 위험이 없기 때문에 대입 연산자( = )를 사용할 수 있습니다. C++에서는 구체적인 타입을 직접 언급할 특별할 이유가 없다면 가급적 auto를 사용할 것을 권장하고 있습니다. 2. 구체적인 타입을 직접 언급할 '특별한 이유' - 정의가 속하는 스코프(scope)가 크고, 코드를 읽는 다른 사람들에게 타입을 명확하게 알리고 싶은 경우. - float 대신 double을 사용해 실수를 표현하는 것처럼 변수의 구간이나 정밀도를 명확하게 하고 싶은 경..