33得票3回答
指向常量成员函数的类型定义

我知道可以这样分开创建一个成员函数的指针。 struct K { void func() {} }; typedef void FuncType(); typedef FuncType K::* MemFuncType; MemFuncType pF = &K::func; 有没...

31得票4回答
为什么调用了非常量成员函数,而不是常量成员函数?

我尝试为我的目的编写类似于Qt的共享数据指针的封装,经过测试发现,当应该调用const函数时,却选择了非const版本。 我正在使用C++0x选项进行编译,以下是一个最简代码示例: struct Data { int x() const { return 1; ...

30得票2回答
成员函数签名末尾的&(和号)代表什么意思?

我记不清是哪个讲座了,但最近我看了一些来自CppCon 2017的讲座,其中有人提到了一种附注的方式,即唯一的真正重载operator=的方法应该是这样的: class test { public: test& operator=(const test&) &...

28得票5回答
在函数定义的末尾,"const" 的意思是什么(在上下文中)?

如果我的类定义如下: type CLASS::FUNCTION(int, const char*) const 最后一个const在闭括号之后的意思是什么,我如何将其应用于函数? type CLASS::FUNCTION(int var1, const char* var2) { }

27得票2回答
在一个非const对象上,为什么C++不会调用具有公共const和私有非const重载的成员函数的const版本?

class C { public: void foo() const {} private: void foo() {} }; int main() { C c; c.foo(); } MSVC 2013 不喜欢这个: > error C2248:...

21得票7回答
在const成员函数中调用非const成员函数

我想知道在const成员函数中是否可以调用非const成员函数。在下面的示例中,First会产生编译错误。我理解为什么会出错,我想知道是否有办法解决这个问题。 class Foo { const int& First() const { return S...

21得票4回答
在C++中,为什么编译器会选择非const函数,而const函数也能正常工作呢?

例如,假设我有一个类: class Foo { public: std::string& Name() { m_maybe_modified = true; return m_name; } const std::st...

19得票2回答
函数的引用限定符是否有真正的用例?

最近我了解了关于函数的引用限定符,例如。 struct foo { void bar() {} void bar1() & {} void bar2() && {} }; 在哪些情况下我可能需要这个功能?这个语言特性有没有实际的用例呢?

16得票1回答
常量引用限定的成员函数

参考限定成员函数的典型示例似乎是这样的: #include <stdio.h> #include <stdexcept> #include <string> // Easy access to literals using namespace std::...