All250 [C++] 한 줄 짜리 지식 모음 알게된 개념 가끔 추가... [클래스 멤버 변수 초기화] - 생성자 내에서 멤버 변수에 값을 넣는 것은 초기화가 아닌 대입이다. 따라서 함수의 헤더에 사용하는 초기화 리스트 (initializer list)를 사용하자. [가상 함수와 가상 테이블] - 가상 함수들을 저장하고 있는 가상 테이블은 클래스마다 하나씩 존재하며, 객체가 할당된 메모리 상에 가상 테이블의 주소가 있다. 따라서 가상 함수가 필요하다면 객체의 메모리에서 가상 테이블의 주소를 찾아 가상 테이블로 간 뒤 가상 테이블에서 원하는 함수의 주소를 또 찾아야 한다. 따라서 가상 함수는 런타임 중 실체를 찾는 동적 바인딩이며 속도가 느리다. 하지만 C++의 다형성(Polymorphism)의 핵심 개념인 동일한 interface, 다른 behavi.. 2020. 1. 20. [C++] C2572 컴파일러 오류. redefinition of default argument // declaration void func(int n = 0); // definition void func(int n = 0) // C2572 { .... } void func(int n) // OK { .... } 위처럼 디폴트 매개변수를 가지는 함수를 작성하다 다음과 같은 에러가 떴음. 선언과 정의를 분리하여 작성하였고, 선언과 정의에 모두 디폴트 매개변수를 쓰면 아래와 같이 C2572 에러 발생 에러 내용은 디폴트 매개변수의 재정의. 선언에 디폴트 매개 변수를 쓰고 정의에도 쓸 경우 디폴트 값이 다를 경우를 막기 위한 에러인 듯 함. 기본 매개 변수는 다시 정의할 수 없습니다. 매개 변수에 다른 값을 지정 해야 하는 경우에는 기본 매개 변수를 정의 하지 않은 상태로 두어야 합니다. https://.. 2020. 1. 11. [C++] 클래스의 멤버가 저장되는 영역 및 메모리 차지 클래스 사용 도중 헷갈리던 내용이 있어서 정리함. 함수 내에서 임시로 객체를 생성할 때 사용 용도에 따라 비효율적인 부분이 있는지 헷갈려서 instance 생성 시 각 멤버들이 어떻게 메모리를 차지하는지 개념을 정리하기 위한 글. 우선 class는 멤버 변수와 멤버 함수를 가질 수 있고 각각 정적(static)과 비정적(non-static) 멤버 변수, 함수를 가질 수 있다. 먼저 클래스 타입의 객체 또는 인스턴스 자체의 크기는 비정적 멤버 변수만 영향을 미친다. 즉 멤버 변수로 int형 변수 1개를 가지면 이 클래스의 instance의 sizeof는 4바이트, 2개를 가지면 8바이트 이런 식. 비정적 멤버 변수는 객체의 생성과 동시에 생성된다. 객체 내의 지역 변수와 동일하므로 스택에 저장된다. (물론.. 2020. 1. 10. [C++] 조정자(Manipulator)를 알아보자 C++은 출력 형식을 사용자가 원하는대로 지정할 수 있는 Manipulator를 제공한다. c++의 outstream인 std::cout과 2020. 1. 3. 내가 따라하는 C++ 코딩표준 [포큐 아카데미 C++ 코딩 표준] 출처: https://docs.popekim.com/ko/coding-standards/cpp 1. 네임스페이스는 모두 소문자로 작성하자. namespace myspace {} 2. 입력(input) 매개변수는 const 참조로 출력(output) 매개변수는 포인터로 받자. bool calculate(const int& n1, const int& n2, int* result){...} 그러면 다음과 같이 함수 호출만 보고 쉽게 input과 ouput을 구분할 수 있고 안전하다. 다만 result에 NULL이 들어올 수 있으므로 함수 내에서 assert를 이용해 NULL 여부를 검사한다. calculate(n1, n2, &result); 3. bool 변수 앞에 항상 소.. 2020. 1. 2. [C++] 가비지 컬렉션과 참조 카운트에 대해 알아보자 | 메모리 관리 자동화 프로그래밍 언어엔 메모리를 프로그래머가 직접 관리해주는 unmanaged 언어와 언어단에서 관리해주는 managed 언어가 있다. 대표적인 예로 C/C++가 unmanaged 언어이며 C#, Java가 managed 언어이다. 대부분의 매니지드 언어에선 자동으로 메모리 관리를 하기 위해 다음 중 하나의 기법을 사용한다. (해당 포스팅에선 스마트 포인터를 다루기 위한 사전 지식을 위해 간단한 개념만 정리합니다.) Garbage collection (가비지 컬렉션 또는 쓰레기 수집) Reference counting (레퍼런스 카운팅 또는 참조 횟수) [Garbage collection] 가비지 컬렉션을 한국말로 굳이 번역하면 쓰레기 수집인데, 사용되지 않는 메모리를 언어단에서 수집하여 지운다는 의미로 보면.. 2019. 12. 30. 이전 1 ··· 32 33 34 35 36 37 38 ··· 42 다음