[英]C++ return type qualifiers heaven
實際上真是太棒了。 有人可以用簡單的英語解釋為什么下面的部分工作與否?
class Hey;
class Bitmap {
public:
const Hey* const& getHey() { return hey; }; // works
const Hey* & getHey2() { return hey; }; // error C2440: 'return' : cannot convert from 'Hey *' to 'const Hey *&'
private:
Hey* hey;
};
您不能添加const
的指針不止一種深這本身不是const
,因為這樣你可以一個東西的地址const
變量成非const
指針。 考慮:
char c;
char* p = &c;
const char* cp = p; // ok, only one type deep
const char x;
cp = &x; // ok
const char*& r = p; // fail, because...
r = cp; // ok
*p = 5; // ok, would overwrite a const variable if binding r to p were allowed
使指針const
以不同的方式防止這種災難。 繼續這個例子:
const char* const& cr = p; // ok
cr = cp; // fail, cr is const, saving us from...
*p = 5; // would overwrite a const variable if cr = cp were allowed
編譯器沒有看到“Hey *”和“const Hey *”相同,所以它不想轉換引用,而他轉換const引用(類似於參數轉換)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.