【发布时间】:2021-08-15 22:54:29
【问题描述】:
我对使用 mingw64 编译 C++11 代码时收到的一些警告感到有些困惑。这是我的 MWE:
class A{
const string name;
const int ID;
public:
A(string name_, int ID_) : name(name_), ID(ID_){
// initialize non-const members
}
const string getName() const{return name;}
const int getID() const{return ID;}
};
int main()
{
A aObj = A("Aname", 1);
std::cout << "getName() = " << aObj.getName() << std::endl;
std::cout << "getID() = " << to_string(aObj.getID()) << std::endl;
}
代码可以正常执行,但我收到了编译器警告:
,,localtest.cpp:10:9: 警告:函数返回类型忽略类型限定符
[-Wignored-qualifiers] const int getID() const{返回 ID;}
所以警告只显示getID(),但不显示getName(),即使两者具有相同的类型限定符。有人可以向我解释一下,为什么这个警告似乎只显示string 而不是int?我想这与 int 是一种原始数据类型有关 - 但究竟是什么?
【问题讨论】:
-
基本上,在
intRValue 上没有可能受其常量影响的操作。它首先是一个 RValue 意味着它。一般来说,类类型并非如此。
标签: c++ c++11 constants compiler-warnings qualifiers