본문 바로가기

c++2

[C++] 생성자, 소멸자, 복사생성자, 복사 대입 연산자, 복사생성 방지에 대한 얘기 C++ 에서는 기본적으로 빈 클래스를 생성하면 자동으로 생성해주는 생성자와 소멸자 등 이있다. 예를들어 는 와 같은 기능을 수행한다고 보면 된다. 매번 다 모든 생성자들과 소멸자를 생성 하는것은 아니고, 컴파일러가 필요하다고 판단될때 생성해준다. 아래와 같은 동작을 수행할 때 생성 된다. 자동으로 생성된 것을 사용하여 문제가 없으면 좋겠지만, 문제가 발생하는 경우들이 있다. 대표적으로 1 .참조자를 데이터 멤버로 가지고 있는 경우 2. 상수 객체를 데이터 멤버로 가지는 경우 두가지를 꼽을 수 있다. 위와 같은 상황에서는 직접 복사 대입 연산자를 정의해 주어야 한다. 그렇지 않으면 컴파일 오류가 발생하게 된다. 그러면, 복사생성자나 대입연산자를 자동생성하지 않는 방법은 없을까? 사본을 만들지 않고 유일한 .. 2021. 2. 17.
안전한 정수 연산을 위해 SafeInt 를 써보자 SafeInt사용 목적SafeInt는 정수 연산에 있어서 발생할 수 있는 오버플로우를 방지하는 목적으로 사용C++ 의 템플릿으로 만들어졌으며, char형에서 __Int64(long long)형 까지 모든 정수형 사용 가능정수 연산을 통한 오버플로우나, 0으로 나누었을때 발생하는 오버플로우 감지 가능 기본 정수 자료형을 사용 했을시예제 소스 - unsigned int#include int main(){unsigned int X1 = 1234567; unsigned int X2 = 1234567; unsigned int X3 = X1 * X2; std::cout 2020. 7. 13.