목록Programming Language (10)
Visual Studio
nullptr 키워드는 std::nullptr_t 타입의 prvalue 리터럴이다. nullptr는 어떤 포인터 타입이나 멤버 포인터 타입의 null 포인터와도 암시적인 형변환이 가능하며, 매크로 NULL과 같이 타입 std::nullptr_t에 포함되는 값을 가진 어떤 null 포인터 상수와도 암시적 형변환이 가능하다. std::nullptr_t std::nullptr_t는 그 자체로는 포인터 타입이 아닌 별개의 타입이며, null포인터 리터럴인 nullptr의 타입이다. 어떤 포인터 타입이나 멤버 포인터 타입과도 암시적 형변환이 가능하다. sizeof(std::nullptr_t) 는 *sizeof(void ) 과 동일하다. 예제 nullptr가 더이상 리터럴이 아니게 되어도 null 포인터 상수의 의..
https://en.wikipedia.org/wiki/Variable_shadowing Variable shadowing - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search A special type of variable in computer programming In computer programming, variable shadowing occurs when a variable declared within a certain scope (decision block, method, or inner en.wikipedia.org

[c++11] rvalue reference 목차로 가기 이미 C++ 에서는 Reference(참조자)를 지원하고 있습니다.rvalue Refer bunhere.tistory.com
https://wyseburn.tistory.com/entry/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C%EC%97%90%EC%84%9C-%EC%B4%88%EC%A4%91%EC%A2%85%EC%84%B1-%EB%B6%84%EB%A6%AC
void *memset(void *dest, int c, size_t count); memset은 dest 포인터에서 count 만큼의 바이트를 c 값으로 초기화하는, c에서 유용하고 또 상당히 많이 사용하는 함수이다. 그런데 memset에는 c에 미숙한 사람이 헷갈리기 쉬운 두가지 함정이 있다. 1. memset의 두번째 파라미터는 int 타입으로 받지만 unsigned char로 형변환되어 사용된다. 초기화에 사용되는 값인 c는 int 타입으로 받는데, 이 값은 사실 unsigned char로 형변환되어 사용된다. 실제로 255 이상의 값을 넣으면 오버플로우되어 0부터 다시 시작한다. 2. memset은 주어지는 포인터의 타입과는 상관없이 1byte씩 초기화 한다. 사실 1번과 일맥상통한 이야기인데,..

Virtual Function 키워드 static binding(early binding) dynamic binding(late binding) v-table(virtual function table) override 키워드 주요 내용 1. virtual이면서 static 함수일 수 없다. 2. virtual이면서 다른 클래스의 friend일 수 있다. 3. 런타임 다형성을 위해 가상 함수는 기초 클래스의 포인터나 레퍼런스로 접근할 수 있다. 4. 상속된 클래스의 가상 함수 프로토타입 선언은 기초 클래스와 같아야 한다. 5. 가상 함수는 기초 클래스와 override한 상속된 클래스에서 항상 정의되어 있다. 상속된 클래스에서 꼭 override 하지 않아도 되지만 이 경우 함수 호출시 기초 클래스의 함수..
한동안 너무 C++를 안써서 기억이 가물가물하다. 사용하면서 기억해둘만한 것들이나 까먹기 쉬운 것을 메모한다. singleton example code https://github.com/ReolSt/GLEngine/blob/main/GL/core/Singleton.h 예전에 opengl 기반 엔진 만들때 썼던 싱글턴 클래스이다. "어떻게 쓰는데요?" // in YourClass.h class YourClass : public Singleton { 원하는 대로 하세요... }; // in main.cpp int main() { ... auto instance = YourClass::GetInstance(); ... } static member function definition outside of head..
dynamic binding(late binding) - Runtime에 값이 결정됨. 타입이 분명하면 static binding(early binding) 부모 클래스의 포인터로 선언된다면 dynamic binding

C/C++의 매크로는 __VA_ARGS__로 가변 인자를 사용할 수 있는데. 매크로를 사용할 때 가변 인자 위치에 아무 파라미터도 주어지지 않으면 문제가 생긴다. 다음의 예제를 보자. #define CREATEOBJECT(A, B, ...) \ std::make_shared(B, __VA_ARGS__); \ ... CREATEOBJECT(ObjectType, param1) // std::make_shared
Linux 시스템 상에서 개발을 해본 사람이라면, GTK라는 이름을 한번쯤은 들어봤을 것이다.GTK는 GIMP Toolkit의 줄임말로, 본래 이미지 편집 프로그램인 GIMP의 개발을 위해 만들어진 GUI 라이브러리이지만,규모가 커지면서 범용 라이브러리가 되었다. GTK는 다른 GUI 라이브러리들이 객체지향 언어로 작성되었던 것과는 달리, 다른 언어들을 위한 바인딩을 쉽게 만들 수 있도록 하기 위하여 C로 작성되었다. GUI 애플리케이션을 개발하는데 있어 절차지향 설계보다는 객체지향 설계가 압도적으로 편하기 때문에 객체지향 시스템으로 설계하는 것이 일반적이지만, C는 언어 자체에서 OOP를 지원하지 않기 때문에 OOP로 개발하기 위해서는 추가적인 번거로운 작업이 필요하다.GTK 개발자들은 이를 위해 C를..