[英]Do covariant cv-qualifiers apply to primitive types in C++?
在C ++中,減少派生類中返回類型的cv限定符是有效的:
class Base {
virtual const Base* f();
};
class Derived : public Base {
Base* f() override;
};
這對指向原始類型的指針有效嗎?
class Base {
virtual const int* f();
};
class Derived : public Base {
int* f() override;
};
協變cv限定符是否適用於C ++中的原始類型?
沒有
§10.3.7虛函數
重寫函數的返回類型應與重寫函數的返回類型相同,或者與函數類的協變相同。 如果函數
D::f
覆蓋函數B::f
, 則函數的返回類型如果滿足以下條件則是協變的:
- 兩者都是類的指針,都是對類的左值引用,或者兩者都是對類的右值引用
- 在返回類型的類
B::f
是相同的類中的返回類型的類D::f
,或者是一個明確的和可訪問的直接或間接的基類中的返回類型的類的D::f
- 指針或引用在
D::f
的返回類型中具有相同的cv-qualification和類類型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.