아니.
음, 일종의 네의 고려 사람들이 존재한다는 의미에서 new
의 new int
연산자로합니다. 그러나이 의견은 (대부분) 표준과 상충됩니다.
먼저 [lex.operators/1]
언어로 된 연산자를 나열합니다. 이것들이 단지 "전처리 연산자"라고 생각하도록 속지 마십시오. 어휘 연산자 의 의미에서 그러한 구별은 존재하지 않습니다 . 예를 들어 ++
매크로 를 사용할 수 없기 때문에 말도 안됩니다 .
new
사실 키워드 (당 [lex.key/1]
)입니다.
다음으로 새로운 표현 자체를 살펴 보겠습니다 . 이것은 일이 조금 더 울퉁불퉁 해지는 곳입니다. 예를 들어에는 다음과 같은 문구가 있습니다 [expr.new/4]
.
대신, 명시 적으로 괄호로 묶인 new 연산자 버전을 사용하여 복합 유형의 개체를 만들 수 있습니다.
위에 제공된 정의와 상충되고 해당 섹션의 다른 곳에서는 발생하지 않기 때문에 편집 오류라고 생각합니다.
그런 다음 연산자 오버로딩에 도달합니다 . 연산자 선언에 대한 문법적 생성에서 사물을 나열하는 터미널 (포함 new
)의 이름은 연산자 ( [over.oper.general/1]
)입니다. 나는 우리가 이것에 대해 걱정할 필요가 없다고 생각합니다. 문법에서 터미널의 이름은 용어 정의를 소개하기위한 것이 아닙니다. 결국, _ 비트 AND 연산 일 필요 가없는 and-expression 이 있습니다. 그것은 단지 등식 표현 일 수 있습니다 :
and-expression :
같음-표현
및-표현 &
같음-표현
이와 같은 문법을 정의하는 것이 일반적이며 모든 등식 표현 이 어떻게 든 비트 AND 연산자의 호출로 간주 된다는 것을 의미하지는 않습니다 .
마지막으로, 일부는 (연산자 오버로딩 섹션에있는) 다음 문구 new
가 이제는 고립 된 상태에서 마술처럼 연산자 라는 증거라고 주장했습니다 .
연산자는 new[]
, delete[]
, ()
, 및 []
하나 이상의 토큰에서 형성된다
그들에게 나는 그것이 new
나열되지 않았을뿐만 아니라 , new
그 자체 가 여전히 운영자가 아니더라도 "과부화 될 수있는 것"의보다 넓은 의미에서 "연산자"라는 용어를 분명히 사용하고 있다고 말한다 . 또한 여러분이 알아야 할 모든 것을 알려주는 비 규범 적 메모에 있습니다.
그리고 당신이 지적했듯이 우리는 이미 operator new
다른 것으로 간주 합니다.
new
와sizeof
같습니다. 그리고 저는 대부분의 C ++ 커뮤니티가sizeof
연산자로 생각한다고 생각 합니다. 표준은sizeof
그 효과를 설명 할 때 " 연산자"를 언급하기도합니다.