일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- C
- 팰린드롬 만들기
- directx
- 1563
- const
- NRVO
- 프로그래머스
- UnrealEngine5
- IFileDialog
- C++
- 백준
- baekjoon
- DirectX11
- DeferredRendering
- 2294
- Programmers
- Frustum
- winapi
- Unreal Engine5
- softeer
- UnrealEngine4
- UE5
- RootMotion
- GeeksForGeeks
- algorithm
- 언리얼엔진5
- 줄 세우기
- 오블완
- RVO
- 티스토리챌린지
- Today
- Total
목록GeeksForGeeks (5)
Game Develop
static변수는 선언과 함께 메모리에 할당되어 프로그램 종료까지 메모리를 점유한다. 초기화되지 않은 정적변수,전역변수는 BSS영역에 할당될 것이고 초기화된것은 Data영역에 할당될것이다. 위의 경우, 초기화 되지 않았으니 BSS영역일것이다. fun()함수를 여러번 호출하더라도 t1은 최초선언할 때 생성자를 호출해서 생성된 이후, 계속 메모리를 점유하고있기 때문에 생성자를 여러번 호출하지 않는다. 결국 1번만 호출하기 때문에 답은 C이다. 이 문제는 변환생성자(conversion constructor)를 아느냐 마느냐를 물어보는 문제다. 나는 이 문제에서 처음 알게된 생성자다;; 진짜 여기 사이트 문제풀어보길 잘한 것 같다. 물론 이펙티브 c++책을 사기도 했고, 결국 알게됐었겠지만 아마 좀 더 나중이지..
위 문제의 정답은 D이다. 왜일까? 아마 C라 생각한 사람도 있을 수 있다. 하지만 C++에서 Class는 기본적으로 따로 명시하지 않을 경우, 접근제한자는 private이다. (struct는 public) 그렇기 때문에 위의 Point클래스에서의 생성자는 private이고 main함수에서 저렇게 호출 할 수 없다. 그래서 당연히 컴파일단계에서 에러가난다. 위 문제의 정답은 C이다. t1은 저 선언만으로 스택에 Point만큼의 크기를 할당받았지만, t2는 그냥 객체의 주소를 담는 포인터변수일 뿐이다. 아마 C++문법이나 생성자호출에 대해 따로 공부하지않은 사람은 슬슬 헷갈릴 수도 있다. 위 문제의 정답은 C이다. 앞서 말했듯이, 포인터변수는 선언하더라도 생성자가 호출되지 않는다. new연산자를 통해 힙메..
복사생성자가 호출되는 경우를 고르는 문제이다. 이전문제와 같이 A,B,C,D가 전부 해당하기 때문에 정답은 E인 All of the above이다. 차례대로 보자면, A. 클래스의 객체가 값으로 리턴될 때 B. 클래스의 객체가 함수에 매개변수로 넘겨질 때 C. 같은 클래스의 다른 객체를 기반으로 객체를 생성할 때 D. 컴파일러가 임시 객체를 생성할 때 E. 전부 다 A같은 경우, 함수 내에서 Temp a; return a; 라는 구문을 실행할 경우 a라는 인스턴스는 함수가 끝날 때 같이 소멸하지만, a를 리턴받는 곳에서 a의 값을 이용해 복사생성한 객체를 받기 때문에 복사생성자가 호출된다. 참고로 A의 경우처럼 객체를 값으로 리턴할 때 RVO,NRVO라는 컴파일러 최적화 기법?이 있다. 일단 간단하게 말..
클래스 생성 시 따로 코드로 작성하지 않아도 디폴트로 추가되는 생성자,연산자 등을 선택하는 문제이다. A,B,C 모두 해당되기 때문에 정답은 D인 All of the above 이다. 아래의 예시코드를 보면, 클래스 생성과 변수 선언만 했을 뿐이지만 기본생성자,복사생성자,대입연산자 전부 잘 작동한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Temp { public: int a = 0; }; int main() { Temp temp1; // A constructor without any parameter // OK. temp1.a = 20; Temp temp2(temp1); // Copy Constructor // OK. Temp temp3; ..
C++ 기본기를 다지기 위해 GeeksForGeeks 사이트에서 Quiz를 풀면서 알게된 기본 C++지식들을 정리하는 곳입니다. 간단하게 뭐는 뭐다..라고만 올리기도 하고, 모르는 문제가 있으면 해당문제 공부해서 올릴 예정입니다. https://www.geeksforgeeks.org/c-plus-plus-gq/constructors-gq/ Constructors in C++ - GeeksQuiz Quiz or mock test on constructors in C++. The quiz contains multiple choice and output of program questions for interview preparation. www.geeksforgeeks.org C++을 공부하는 분들은 한번쯤이..