이런 수업을 썼어요
#include <iostream>
using std::cout;
class Resource
{
public:
Resource(){ cout << "allocated\n";}
~Resource(){ cout << "deleted\n";}
};
그런 다음 내부 int main()
에 클래스의 인스턴스 2 개를 만듭니다.
int main()
{
Resource* p1 = new Resource();
Resource* p2 = new Resource;
}
new Resource
과 의 차이점은 무엇입니까 new Resource()
?
괄호 변화를 할! @songyuanyao가 지적했듯이 괄호를 사용 하여 값 초기화 를 호출 하고 그것없이 기본 초기화 를 호출 합니다. Resource
당신 과 같은 클래스 유형의 경우 차이가 없습니다. 생성자는 두 경우 모두 호출됩니다.
그러나 기본 데이터 유형이있는 경우 int
차이가 더 중요합니다.
int a{};
int b;
a
값이 초기화 되었기 때문에 값이 0입니다 (기본적으로 0). b
그러나 가비지 값, 즉 단위 화 된 값을 갖습니다. 이것이 의도하지 않은 결과를 초래할 수 있기 때문에 초기화되지 않은 변수를 사용하는 것은 나쁜 습관으로 간주되는 이유입니다.
추가 할 가치가있는 것은 C ++ 11 이후로 중괄호를 사용하여 변수를 통합하는 균일 한 방법이 {}
있습니다.. 기본 유형, 집계 및 비 집계 유형, 배열 및 표준 컨테이너에 대한 이전 구분을 제거합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다