클래스 데이터 멤버 직접 초기화 구문이 금지된 이유
C에서는 ( ) 중괄호로 묶인 구문. 다음 코드를 고려해보세요.
class test { public: void fun() { int a(3); std::cout << a << '\n'; } private: int s(3); // Compiler error };
파싱 모호성을 방지하는 것입니다. . 중괄호로 묶인 초기화가 허용된 경우 컴파일러는 다음과 같은 상황에서 선언을 잠재적으로 잘못 해석할 수 있습니다.
struct S { int i(x); // data member with initializer // Other code static int x; };여기서 i(x)가 데이터 멤버 이니셜라이저인지 멤버 함수 선언인지는 둘 다 다음과 같이 명확하지 않습니다. 동일한 구문입니다.이 모호성을 해결하기 위해 C는 다음 제한 사항을 선택했습니다.
위 내용은 중괄호로 묶인 구문을 사용하여 클래스 데이터 멤버를 초기화할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!