13得票6回答
常量函数调用非常量函数或反之(以避免重复)?

有没有一个比另一个更有优势的使用方式? class Foo { public: const int& get() const { // stuff here return myInt; } int& get()...

13得票13回答
我应该将这些成员函数声明为const吗?

我正在处理一些C++代码,其中我有几个管理器对象,其中包含一些私有方法。 void NotifyFooUpdated(); 调用此对象的监听器上的OnFooUpdated()方法。 请注意,它们不会修改此对象的状态,因此从技术上讲,它们可以被定义为const方法,尽管它们通常会修改整个...

12得票3回答
为什么要使用const成员函数?

我正在努力理解类的getter和setter函数... 我的问题是: 如果我设计一个只从类中获取状态的函数(一个“getter”函数),为什么要将其标记为“const成员函数”? 我的意思是,如果我的函数设计为不改变类的任何属性,为什么要使用const成员函数? 我不明白,请帮我解释一下 :...

9得票1回答
为什么析构函数不能有引用限定符?

除了“因为标准规定如此”的原因外,以下代码不允许的原因是什么? struct Foo { ~Foo() && {} ~Foo() & {} }; 我知道这是非法的,但我想知道为什么。 我在思考一个老问题-避免未命名实例,例如在使用守卫对象时: ...

8得票1回答
const修饰成员函数如何影响重载决策?

我有以下测试代码: #include <string> #include <iostream> class CString { public: CString(char const*) {} }; class TestBed { public: ...

8得票1回答
一个const临时对象为什么选择调用非const成员函数而不是const成员函数?

此示例代码来自:http://en.cppreference.com/w/cpp/types/add_cv(我稍作修改)。 struct foo { void m() { std::cout << "Non-cv\n"; } void m() const { st...

8得票1回答
在C++中进行常量成员函数的重载决议

假设您有一个类T,其中包含两个成员函数: char foo() const {...} char foo() {...}. 据我所知,当对常量T进行调用时,我们解析为(1);对于非常量T,则解析为(2)。 这是正确的吗? 在此解析中调用了哪个规则?(参考标准很好,但简要摘要也会受到...

7得票3回答
从语法角度来看,在C++函数中,“volatile”关键字有多少种用法?

我基于这个概念(也许不正确?!)询问了这个函数:在任何const可以存在的地方,volatile都可以存在。 class classA { public: const int Foo() const; } 这里的第一个 "const" 表示返回值是常量,我们不能更改它。 第二个 ...

7得票1回答
在C++中使用子成员函数的ref-qualifier重载父成员函数而不带引用限定符

在C++中,一个类不能同时定义一个带有引用限定符的成员函数和一个没有引用限定符的成员函数作为重载。但是同时也可以从父类继承一个成员函数,并在子类中重载它,就像下面的例子: struct A { void f() {} //void f() & {} //overloa...