哪个更好:
bool MyClass::someQuery() const;
const bool MyClass::someQuery() const;
Run Code Online (Sandbox Code Playgroud)
我一直在使用'const bool',因为我确信我记得听到它是"什么样做的"(例如比较运营商)但我无法在任何地方找到证据,主要是因为它很难谷歌和Intellisense没有帮助任何人;)任何人都可以确认吗?
对我来说,返回const值(这不仅仅是关于bools)更有意义; 它会阻止临时修改,这几乎总是一个程序员的错误.我只是想要一些东西来支持这一点,所以我可以赞美给我的同事们返回const值:)
我想尝试使用返回类型const MyClass * const.但是,我收到警告:
警告:#815-D:返回类型的类型限定符无意义.
这不是有效的类型吗?我想要一个无法改变的指针,我希望它指向的东西也不会改变.
#include <iostream>
//option 1
struct Obj
{
auto f(int&& x) { printf("&&\n"); }
auto f(int const& x) { printf("const&\n"); }
auto g() const { return int{}; }
const auto h() const { return int{}; }
};
//option 2
struct Obj2
{
auto f(Obj&& x) { printf("&&\n"); }
auto f(Obj const& x) { printf("const&\n"); }
auto g() const { return Obj{}; }
const auto h() const { return Obj{}; }
};
int main()
{
{
int x;
Obj obj;
obj.f(obj.g()); // …Run Code Online (Sandbox Code Playgroud)