簡體   English   中英

協變cv限定符是否適用於C ++中的原始類型?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM