39得票4回答
获取成员函数的内存地址?

如何在C++中获取成员函数的绝对地址?(我需要这个来进行thunking。) 成员函数指针不起作用,因为我无法将它们转换为绝对地址(void *)-- 我需要知道实际函数在内存中的地址,而不仅仅是相对于类型的地址。

325得票15回答
为什么在构造函数中调用虚成员函数是非虚函数调用?

假设我有两个C++类: class A { public: A() { fn(); } virtual void fn() { _n = 1; } int getn() { return _n; } protected: int _n; }; class B : pub...

9得票7回答
将空指针转换为对象并调用其成员函数有实际好处吗?

好的,我知道这在技术上是未定义的行为,但尽管如此,在生产代码中我已经见过这种情况不止一次。请纠正我如果我错了,但我也听说有些人将这个“特性”作为当前C++标准的一个缺陷的某种合理替代品,即无法获取成员函数的地址(实际上是偏移量)。例如,这是一个流行的PCRE(Perl兼容正则表达式)库的实现:...

21得票1回答
在C++11中,如何指定隐式的“this”参数“[[carries_dependency]]”?

在[dcl.attr.depend]/1中,我读到: 属性[...] carries_dependency [...] 可以应用于函数声明或lambda中parameter-declaration的declarator-id,这种情况下它指定参数的初始化对该对象的每个左值转右值转换(4.1)...

9得票3回答
在源文件中存放模板成员函数的特化定义(不带默认体)是否安全?

这是我的意思: // test.h class cls { public: template< typename T > void f( T t ); }; - // test.cpp template<> void cls::f( const...

125得票3回答
为什么在派生类中调用一个非虚成员函数的影子函数,却没有调用基类的成员函数?

假设我们在Visual C++ 2010中有以下情景: #include <iostream> using namespace std; struct Base { void Display() { cout << "Base: Non-v...

129得票8回答
如何将类成员定义为指向另一个成员函数的指针?

我想在一个类的成员中设置一个函数指针,该指针指向同一类中的另一个函数。我这样做的原因很复杂。 在这个例子中,我希望输出为"1"。 class A { public: int f(); int (*x)(); } int A::f() { return 1; } int main...

11得票1回答
成员函数的cv-ref限定符转发

如果没有其他重载(例如f(T &)或f(volatile T &&))(成员)函数模板template< typename T > f(T &&);,那么T &&被称为转发引用,而T是U,或者对于某些cv限定类型U,T &am...

35得票6回答
如何在Visual Studio 11中直接将成员函数绑定到std :: function?

我可以通过使用一个捕获列表来包装成一个lambda表达式,轻松地将成员函数绑定到std::function上。class Class { Class() { Register([=](int n){ Function(n); }); } voi...

521得票4回答
错误:将const xxx作为成员函数的'this'参数传递会丢弃限定符。

#include <iostream> #include <set> using namespace std; class StudentT { public: int id; string name; public: StudentT(i...