65

件名からのように。最近の質問でこの用語を見ましたが、明らかに確立された用語ですが、stackoverflow で何も見つけることができません。

4

6 に答える 6

63

基本型と複合型があります。基本型は算術型、void、およびstd::nullptr_tです。複合型は、配列、関数、ポインター、参照、クラス、共用体、列挙、および非静的メンバーへのポインターです。

cv 非修飾型は、これらの型のいずれかです。

cv 修飾されていない型には、対応する 3 つのcv 修飾された型があります。

  • const 修飾- constcv 修飾子を使用
  • volatile-qualified - volatilecv-qualifier を使用
  • const-volatile-qualifiedconst -とvolatilecv-qualifierの両方を使用

ただし、配列型に適用される cv 修飾子は、実際にはその要素に適用されることに注意してください。

cv 修飾された型と cv 修飾されていない型は異なります。これはintとは異なるタイプですconst int

于 2013-03-14T15:21:08.900 に答える
56

cv 修飾子がない場合、型は「cv 非修飾」です。cv-qualifer は または のいずれconstvolatileです。

于 2013-03-14T15:15:23.757 に答える
13

cvは、constおよびvolatile(まれmutableに)、タイプを修飾する2つの属性を表します。std::remove_constC++11などで操作できます。

優れたcppreferenceサイトはあなたにもっと多くの情報を与えます。

あなたの質問に答えるために、cv-unqualifiedタイプは、cv-qualifiersを持たないか、cv-qualifiersから削除されます。たとえばint、のcv-unqualified部分ですconst volatile int

std::remove_cv<T>::typeはcv-unqualifiedpartofTです。

于 2013-03-14T15:18:08.827 に答える
12

cv-unqualifiedタイプは、 cv-qualifiersのいずれによっても指定されていないタイプです。これらは、タイプの2つの基本的なプロパティを定義します:恒常性とボラティリティC ++ 03 3.9.3 CV-qualifiers§1を参照してください

3.9.1および3.9.2で言及されているタイプは、cv非修飾タイプです。cv-unqualifiedの完全または不完全なオブジェクトタイプであるか、void(3.9)である各タイプには、そのタイプの3つの対応するcv-qualifiedバージョンがあります。

  • const修飾バージョン、
  • 揮発性修飾バージョン、および
  • const-volatile-qualifiedバージョン。

オブジェクトタイプ(1.8)という用語には、オブジェクトの作成時に指定されたcv修飾子が含まれます。

constdecl-specifier-seqに指定子が存在すると、const修飾オブジェクト型のオブジェクトが宣言されます。このようなオブジェクトはと呼ばれますconst object

volatiledecl-specifier-seqに指定子が存在すると、volatilequalifiedオブジェクト型のオブジェクトが宣言されます。このようなオブジェクトはと呼ばれますvolatile object

declspecifier-seqに両方のcv-qualifiersが存在すると、const-volatile-qualifiedオブジェクトタイプのオブジェクトが宣言されます。このようなオブジェクトはと呼ばれますconst volatile object

于 2013-03-14T15:26:46.873 に答える
4

一般に、「同じ型ですが、cv-qualifier が削除されている」ことを意味するため、(たとえば) の cv-unqualified バージョンvoid volatile * const xvoid *x.

ただし、ここでは、ポインター自体ポインターが指すものの両方から cv 修飾子を削除していることに注意してください。ほとんどの場合、cv-unqualifiedは一度に 1 つのオブジェクトのみを参照するため、ポインター自体の cv 修飾されていないバージョンは依然として になりますが、ポインターが指すものの cv 修飾されていないバージョンは にvoid volatile *xなりますvoid *const x

于 2013-03-14T15:16:33.100 に答える