이 내 "코드"가됩니다에 varible 할당 된 힙 초기화 방법 :생성자
class a{
int *var=new int;
public:
a(int i):*var(5){};
~a(){}
};
지금의 과정이 작동하지 않습니다. 생성자에서 힙 변수를 초기화하는 방법은 무엇입니까? 그래서 같이
이 내 "코드"가됩니다에 varible 할당 된 힙 초기화 방법 :생성자
class a{
int *var=new int;
public:
a(int i):*var(5){};
~a(){}
};
지금의 과정이 작동하지 않습니다. 생성자에서 힙 변수를 초기화하는 방법은 무엇입니까? 그래서 같이
(I 생성자 내부 힙 변수를 할당하고 싶지 않은) :
class a{
int *var;
public:
a(int a):var(new int(5)){};
~a()
{
delete var;
}
}
메모리 할당은 생성자에서 일어날 필요가있다. 또한 소멸자에서 할당을 해제해야합니다.
생성자에 대한 매개 변수 a
은 사용되지 않습니다. 이 값을 사용하여 클래스 변수 a
을 초기화하려는 경우 할당 호출을 new var(a)
으로 변경해야합니다.
참고 2 :이 매개 변수는`A`라고 한 이유는 무엇입니까
class a{
std::unique_ptr<int> var;
public:
a(int a): var(std::make_unique<int>(5)){};
~a()
{}
}
: 특별히 수동으로 메모리를 관리 할 필요가없는 한, 더 나은 디자인과 같은 스마트 포인터를 사용하는 것입니다 (운동 말할) 생성자에게? 처음에는 사용되지 않았고 두 번째로 클래스와 동일하게 사용하는 것은 좋지 않습니다. 그렇다면 왜 생성자 안에 힙 변수를 할당하려고하지 않습니까? – skyking