> 백엔드 개발 > C++ > 왜 `Class object();`가 C 객체를 생성하지 않습니까?

왜 `Class object();`가 C 객체를 생성하지 않습니까?

Susan Sarandon
풀어 주다: 2024-12-18 11:04:10
원래의
734명이 탐색했습니다.

Why Doesn't `Class object();` Create a C   Object?

생성자 호출의 부재 이해

C에서 생성자는 클래스의 개체를 초기화하는 데 사용됩니다. 그러나 제공된 코드 조각에서는 생성자가 호출되지 않아 예기치 않은 동작이 발생합니다.

문제

문제가 있는 줄:

Class object();
로그인 후 복사
로그인 후 복사

실제로는 그렇지 않습니다. Class 클래스의 생성자를 호출합니다. 대신 Class 객체를 반환하는 함수를 선언합니다. 생성자를 올바르게 호출하고 개체를 생성하려면 다음 줄에 세미콜론(;)을 추가해야 합니다.

Class object;
로그인 후 복사

Behind the Scenes: The Most Vexing Parse

초기 코드 조각이 강조 표시됩니다. C에서 "가장 짜증나는 구문 분석"으로 알려진 문제입니다.

Class object();
로그인 후 복사
로그인 후 복사

행을 만나면 C 파서는 이를 함수 선언이나 빈 인수 목록이 있는 함수 호출로 모호하게 해석합니다. 이러한 모호함은 종종 혼란과 예상치 못한 결과를 초래합니다.

코드 수정

생성자를 호출하고 객체를 생성하려면 코드를 다음과 같이 업데이트해야 합니다.

#include <iostream>
using namespace std;

class Class {
    Class() {
        cout << "default constructor called";
    }

    ~Class() {
        cout << "destructor called";
    }
};

int main() {
    Class object; // Correctly invokes the constructor
}
로그인 후 복사

수정된 코드를 실행하여 예상 출력을 관찰합니다.

default constructor called
destructor called
로그인 후 복사

위 내용은 왜 `Class object();`가 C 객체를 생성하지 않습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿