C++

[TOC]

구조체와 클래스의 차이

C와 C++에서의 구조체

cast 정리

윈도우 프로시저에 클래스 멤버 함수를 전달하기

STL

vector의 원소를 참조할 때 복사가 발생하나? 복사가 발생하지 않게하려면 어떻게 하나?

변수 선언하며 받는것과 이미 선언된 변수에 받는 것에 && 복사생성자 호출에 차이가 있나?

배열접근 연산자로 접근하면 복사가 발생하나? 포인터로 받으면 복사가 발생하나?

라이브러리

정적 라이브러리(Static Library)

정적 라이브러리 생성 및 사용

공유 라이브러리(Shared Library)

동적 로드(Dynamic Load)

VS에서 프로젝트끼리 참조하기

VS 프로젝트 설정에서 참조란?

소스 코드는 포함 디렉토리, 추가 포함 디렉토리에 경로를 추가하여 참조함 같은 프로젝트에 있는 소스코드가 아니므로 이를 컴파일한 lib 파일에서 정의부분을 링크시킴 같은 솔루션 내에 있는 프로젝트라면 이 lib 파일이 있는 경로를 따로 넣어주지 않고 참조에 프로젝트를 추가하면 됨 다른 솔루션에서 컴파일한 lib 파일만 제공된다면 이 lib 파일이 있는 경로를 “링커 > 입력 > 추가 종속성”에 추가해야함. 같은 솔루션 내에 있는 프로젝트라도 “일반 > 구성 형식”이 응용 프로그램이라면 lib 파일이 생성되지 않기 때문에 링크 시 에러가 남(LNK2019 확인할 수 없는 외부 참조입니다) 따라서 참조되는 프로젝트의 “일반 > 구성 형식”의 값을 “정적 라이브러리”로 변경해서 .lib 파일이 생성되도록 해야함. 하지만 이렇게 하면 실행파일이 없기 때문에 실행되지 않음. 따라서 실행이 되는지 정도의 테스트를 위해 사용해야함.

가상함수 호출 순서

상속관계가 있을 때 소멸자를 가상함수로 지정해야하는 이유

다형성

인터페이스

vector에는 배열을 저장할 수 없다.

C++에서의 static

구글의 C++ 코드 컨벤션

한글 번역

MS의 C++ 코드 컨벤션

https://docs.microsoft.com/ko-kr/windows/win32/stg/coding-style-conventions

포프의 C++ 코딩 스탠다드

https://docs.google.com/document/d/1cT8EPgMXe0eopeHvwuFmbHG4TJr5kUmcovkr5irQZmo/edit#


클래스 선언 시 자기자신의 클래스 타입인 멤버변수를 선언하기

VS 콘솔 프로젝트에서 Direct3D 사용

상속생성자

class B {
  int v_;

public:
  B() : B(0) {}		// C++11의 위임생성자 기능 활용
  B(int v) : v_(v) {}
  int get();
  void set(int v);
};

class D : public B {
  float v2_;		// 초기화 필요
public:
  using B::B; // 상속 생성자
  void compute();
};

출처: https://yesarang.tistory.com/374 [김윤수의 이상계를 꿈꾸며]

위임 생성자

에러

2019 링크 에러 시 확인 사항

C2512 : 사용할 수 있는 적절한 기본 생성자가 없습니다.

부동소수점 타입의 변수는 static 클래스의 static 멤버라도 클래스 내부에서 초기화 할 수 없다.

static class A{
	static int i = 1; // 가능
	static float f = 1.0 // 불가능, 에러: "const float" 형식의 멤버에는 in-class initializer를 사용할 수 없습니다.
}

std::vector::erase() 사용 시 “삭제된 함수를 참조하려고 합니다” 컴파일 에러.

memcpy 로 구조체, 클래스 복사 문제

fatal error C1010: 미리 컴파일된 헤더를 찾는 동안 예기치 않은 파일의 끝이 나타났습니다.

LNK2001 외부 기호를 확인할 수 없습니다

상호참조로 인한 에러(구문 오류 ‘;’…)

vector의 요소를 포인터로 저장하고 있을 경우 Dangling Pointer가 되서 에러나는 경우

C2061 구문 오류: 식별자 ‘DXGI_JPEG_AC_HUFFMAN_TABLE’

TransparentBlt을 사용시 컴파일 에러

.inl 파일

##

참고