클래스 인스턴스를 만들 때 ()를 사용하는 것과 ()를 사용하지 않는 것의 차이점은 무엇입니까?

cuong.pq

이런 수업을 썼어요

#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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관