struct CCompare
{
const bool operator()(const int& lhs, const int& rhs) const {
return lhs < rhs;
}
};
警告1個警告C4180:限定符應用於函數類型沒有 含義;返回的`常量bool`導致警告C4180
我看到返回值的用法const bool
在編程的書。當我使用vs2010編譯上述代碼時,它會報告警告C4180。
下面的代碼,而不是將不會導致同樣的警告。
struct CCompare
{
bool operator()(const int& lhs, const int& rhs) const {
return lhs < rhs;
}
};
問題1>這是真的,的const Fundamental_Data_Types
作爲一個功能的使用返回值沒有意義?
Question2>確實如果Type是類/結構,const Type
作爲函數返回值的使用纔有意義?
謝謝
// //更新
struct CClass
{
int val;
CClass(int _val) : val(_val) {}
void SetValue(int _val) {
val = _val;
}
};
struct CCompare
{
const CClass getMe() const {
return CClass(10);
}
CClass getMeB() const {
return CClass(10);
}
};
int main(/*int argc, char *argv[]*/)
{
CCompare c;
c.getMe().SetValue(20); // error
c.getMeB().SetValue(20); // ok
}
在這兩種情況下,返回值都被複制到調用者。你沒有權利對他們回來的複製值執行'const'。 – chris
只有返回引用或指針時,'const'纔有意義,無論它是類/結構還是基本類型。 –
vc2012無警告。 – Jichao