공허한 게 무슨 소용이야?
분명히 이건 기능으로 돌아오는 길을 선언하는 것이 가능하다.const void
:
const void foo()
{
}
G++은 고려하는 것 같다.const
중요하게, 때문에 다음 코드:을 수정하지 않는다.
#include <type_traits>
static_assert(std::is_same<void(), const void()>::value, "const matters");
그래서는다const void
어떤 실용적인 중요성이 있나요?
const void
전혀 없었기 때문에 지적하고 있는 컴파일러가 해를 주는 것은 일반적인 규칙 이 한가지 예외를 킥은 수 있나.
그 위에 몇몇 토론하고 있다.const void*
매우 유용한 게 아닙니다.
const void *는 얼마나 유용합니까?나는 얼마나 공허할 수 있는지 알 수 있지만 전자는 그렇지 않다.–스파이디
실은.const void*
가끔 필수적이다.따라에 반대하는 것은 그 물건을 가리켰다 읽다를 선언하고 있습니다.void* const
자긴은 포인터 자체가 아닌 그것에 있는 것이 아니 가리키는 것 일정하다 말한다.
내 경험을 통해 상수를 사용하여, 포인터입니다.const void*
갈수록 두가지 형태 중 유용합니다.물론, 있다.const void* const
는 이 속성이 가리키는 두 포인터와 것은 변함 없담을 의미한다.
void*
보통 방법으로 주위에(예를 들어와 비특이적 조언을 통과하는 데 사용됩니다.memcpy()
를 통과하고 싶은 경우const char*
그런 기능에는 사용할 수 없습니다.void*
또는 가리키는 것이 일정하고 변경할 수 없다는 사실을 잃게 됩니다.현재의 C++ 컴파일러는 컴파일러의 컴파일을 거부합니다.이는 암묵적으로 캐스트해야 하기 때문입니다.const
이 데이터는 읽기 전용 메모리에 있을 수 있으며 쓰기 시도 시 예외가 발생할 수 있습니다.
이래서 두 번째 주장은memcpy()
이const void*
단순한 것이 아니라void*
.
사실 그렇지 않아요.그러나 cv-qualifications를 무효로 무시하거나 오류를 발생시키는 것은 컴파일러 구현과 최종 사용자 코드 양면에서 불필요한 복잡성을 야기할 수 있습니다.다음과 같은 템플릿을 고려합니다.
template<typename T>
const T ...
이 시나리오에서 사용을 무효로 할 이유는 없습니다(이미보다 더 많은 경우). 골칫거리만 생길 뿐입니다.
또, 한편으로const void
도움이 되지 않습니다.const void*
용도가 있습니다.
언급URL : https://stackoverflow.com/questions/5057987/whats-the-point-of-const-void
'programing' 카테고리의 다른 글
ArrayList의 contains() 메서드는 객체를 어떻게 평가합니까? (0) | 2022.08.11 |
---|---|
Linux에서 공유 라이브러리를 주소 공간에 로드하는 방법 (0) | 2022.08.11 |
v-for 루프의 n번째 항목마다 항목 삽입 (0) | 2022.07.16 |
Vue.js가 컴포넌트 내에서 실행 중인 setInterval을 삭제합니다. (0) | 2022.07.16 |
Java에서 수천 구분자를 설정하는 방법은 무엇입니까? (0) | 2022.07.16 |