목록Dev. Study Note (179)
Priv's Blog
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을 사용해 실수를 표현하는 것처럼 변수의 구간이나 정밀도를 명확하게 하고 싶은 경..
1. Mathf.Lerp( ) Mathf 라이브러리에서 제공하는 Learp( ) 메서드는 선형 보간을 구현할 수 있게 해주는 메서드입니다. 흔히 말하는 '부드럽게 이동하기' 기능을 구현하기 위해서 종종 마주하게 되는 메서드입니다. 선형 보간은 쉽게 말해서 두 값이 주어졌을 때, 두 값 사이를 직선으로 이은 뒤, 선형적으로 그 사이의 값을 추정해 내는 기법입니다. 이해를 쉽게 하기 위해 덧붙이자면, AMD에서 개발해 제공하는 Fluid Motion Video 기술을 설명할 때도 '보간'이라는 단어가 등장합니다. Fluid Motion Video 기술은 영상의 두 프레임 사이의 이미지를 추정해 그려낸 뒤, 이를 삽입하여 기존의 영상보다 더 많은 프레임을 지닌(더 부드러운) 영상을 만들어내는 기술입니다. Un..
1. foreach( ) 문 foreach( ) 문은 배열이나 리스트, 딕셔너리 등과 같은 타입의 인스턴스를 매개변수로 받아서 각 요소들을 반복적으로 반환하는 편리한 반복문입니다. var fibNumbers = new List { 0, 1, 1, 2, 3, 5, 8, 13 }; foreach (int element in fibNumbers) { Console.Write($"{element} "); } // Output: // 0 1 1 2 3 5 8 13 하지만 foreach( ) 문은 enumerator를 사용합니다. 다른 언어에서는 iterator라는 단어를 사용하지만, C#에서는 enumerator라는 단어를 사용하므로 구분해 사용하겠습니다. 2. enumerator는 참조 형식(Reference ..