728x90
반응형

Program Language/C & C++ 112

[C++] Implicit Linking/Explicit Linking 장단점

1. Implicit Linking (묵시적 링크) Implicit Linking은 정확하게 표현하면 Implicit Load Time Linking 이라 할 수 있는데 이는 해당 프로그램에서 사용될 DLL 정보를 프로그램에 내장하는 방법이다. 이렇게 하면 프로그램을 실행할 때 어떤 DLL이 필요한지 알려주어 프로그램이 착오 없이 실행된다. Implicit Linking으로 사용하고자 할 때는 해당 LIB 파일을 링크 옵션에 더해준 뒤 헤더 파일을 소스코드에 포함시키고 원하는 함수를 사용하면 되므로 간단하다. 2. Explicit Linking (명시적 링크) Explicit Linking은 Implicit Linking에 비해 그 사용이 까다롭지만 원하는 시점에 마음대로 올리고 내릴 수 있다는 점에서 ..

[C++] 타입추론 decltype(auto)

auto를 이용하면 표현식의 타입이 자동으로 연역된다. 만약 const 한정자가 붙어 있다면 const 속성을 없애버린다. decltype은 이런 효과가 없기 때문에 중복된 코드를 만들게 된다. C++14에서는 이 문제를 해결하기 위해 decltype(auto)를 도입했다. const string message = "Test"; const string& foo() { return message; } // foo()를 호출해서 그 리턴 값을 auto 변수에 담을 수 있다. auto f1 = foo(); 그런데 auto는 함수 foo()의 리턴 값이 가진 const 속성을 없애버리기 때문에 f1은 string 타입이 되며 복제본이 만들어진다. 만약 f1이 const 참조형을 유지하길 원한다면 아래처럼 명시적..

[C++] 가상 파괴자(Virtual Destructor)의 필요성

일반적으로 파괴자에서 처리해야 할 작업이 없으면 정의 자체를 안 하는 경우가 많다. 할당을 진행한 경우에는 파괴자를 정의하고 처리를 해줘야 하는게 정상이다. 파괴자가 필요할 때는 아래와 같다. - Base, Abstract class에서 파괴자 정의를 한 경우 (필요로 할 때) - Upcasting 될 여지가 있는 경우 #include using namespace std; class Person { public: ~Person() { cout

728x90
반응형