면접 준비용으로 정리하는 것. 글이 다소 두서 없을 수 있음. 나편하게 읽으려고 쓰는 것임. 1. 구조체와 클래스의 통일성 있는 초기화 방법 : ex) struct Ronaldo 라는 구조체와 class Messi 라는 클래스가 있다고 가정 : 초기화는 Ronaldo = {1,2,3}; Messi = {1,2,3}; 이런식으로 동일하게 이용할 수 있다. : 구조체나 클래스 외에도 변수도 저런식으로 초기화가 가능하다.(굳이 쓸일은 없을거 같다만..) : 0으로 초기화할 경우 {} 뭐 이런식으로 말이다. : 클래스 내에서 생성자 초기화 리스트에서도 멤버 변수인 배열을 초기화 할 때 사용할 수도 있음. 1.2 초기화 리스트 : initializer_list 헤더에 정의 : 파라미터 개수가 가변적일 때 사용하면..
면접 공부하면서 글을 쓰는거라 내방식 대로 서술함. 다소 두서가 없을 수 있음. 1. typedef : 새롭게 타입을 만들지 않고, 이미 정의된 타입에 또다른 이름을 부여하는 것(참조와는 다름) : ex) typedef double* d_ptr; --> double* 타입에 또 다른 이름인 d_ptr을 부여함. : ex) d_ptr attack; --> double* 형의 attack이라는 변수 1.1 typedef를 쓰는 경우는 언제일까? : 이름이 너무 길 때, 간편하게 쓸 수 있음 : ex) void ProcessPacket(const std::vector& val); : 위의 ProcessPacket이라는 함수의 파라미터는 단 하나인데, 엄청나게 길다 .... 이럴 때 쓰면 좋다. : typede..
면접 대비용으로 작성한 것이라 나를 제외한 보는 사람에겐 두서 없어 보일 수 있음. 1. const 는 일단 절대 변경 되지 말아야 할 것을 지정해주는 것임. 우리가 코드를 작성할 때 const에 대한 변경을 시도한다면 컴파일러가 잡아낸다. 2. const 포인터 int* myScore; myScore = new int[50]; myScore[3]=10; 위 코드가 있다고 가정해보자. myScore는 50칸 짜리 int형 배열을 가리키고 있다. myScore가 가리키는 데이터가 변경이 되지 않게 하려면 위 코드에서 int* myScore --> const int* myScore 혹은 int const* myScore로 변경해주어야 한다. 이렇게 된다면 위 코드에서 myScore[3] =10 부분에서 컴파..
면접대비용으로 정리한거라 남들이 보기에 다소 두서 없을 수 있음 참고바람 1. 이동 시맨틱은 이동 생성자, 이동 대입 연산자를 통해 지원함. 이동 생성자, 이동 대입 연산자는 원본 객체 --> 새로운 객체로 복사 --> 원본 null로 초기화 의 과정이다. 즉 객체에 대한 메모리 소유권을 이동함. 그 결과 댕글링 포인터나, 메모리 릭 발생을 예방함. 2. 이동 시맨틱은 r-value 참조로 구현됨. 내가 어떤 클래스를 구현했고, 그 클래스가 이동 시맨틱으로 동작하게 하려면 위에서 언급한 1 2 3 4 5 6 class LiverPool { public: LiverPool(LiverPool&& val) noexcept; // move construtor LiverPool& operator=(LiverPoo..
면접 대비용으로 공부하면서 정리한거라 다소 두서가 없어 보일 수 있음. 1. 참조형 변수는 생성하자마자 초기화 해야함 예 int ace = 10; int& son = ace; 1.1 참조를 한 변수 (위에서 son)를 변경하면 원본(위에서 ace)도 변경된다. 1.2 클래스 멤버 변수는 생성하자마자 초기화를 해주지 않아도 된다. 1.3 숫자와 같은 것들은 참조를 할 수 없다. 예 int& ronaldo = 7; --> 생각해보면 말이 안된다. 변경을 할 수가 없는데 어찌 참조하나 * 그대신 const 키워드가 있으면 가능하다 const int& ronaldo = 7 뭐 이런식으로 말이지. 1.4 참조형 변수는 한 번 선언할 때 초기화 되면 참조 대상은 절대 바뀌지 않는다. 단지 값만 바뀔 수 있다. 1...