52得票4回答
我应该更喜欢私有成员函数,还是未命名命名空间中的函数?

我发现自己倾向于不使用私有类函数。如果可能的话,我会将所有候选的私有类函数放入未命名的命名空间中,并将所有必要的信息作为函数参数传递。我没有一个合理的解释为什么我这样做,但至少对我来说,这看起来更自然。作为结果,我需要在头文件中暴露较少的内部细节。 你对此有什么看法 - 这样做是正确的做法吗?

50得票5回答
C++结构体可以有成员函数吗?

我曾经对结构体和类之间的区别感到非常困惑,因为它们似乎被用于几乎相同的事情。我在谷歌上搜索了它们的区别,但唯一的答案是结构体默认具有公共成员,而类默认具有私有成员。然而,我的讲师告诉我结构体不能包含成员函数。但是我在互联网上看到很多帖子中人们在结构体中包含成员函数,并明确表示这样做没问题。 ...

47得票3回答
当多个基类具有相同名称的成员函数时,我该如何解决函数调用的歧义问题?

我有一个与C++中的多重继承相关的基本问题。如果我有如下所示的代码: struct base1 { void start() { cout << "Inside base1"; } }; struct base2 { void start() { cout <...

47得票4回答
为什么有些运算符只能作为成员函数重载,有些只能作为友元函数重载,还有一些既可以作为成员函数又可以作为友元函数重载?

为什么有些运算符只能作为成员函数重载,而有些则只能作为非成员“自由”函数重载,还有一些则既可以作为成员函数又可以作为非成员函数? 这样设计的原理是什么? 如何记住哪些运算符可以作为成员函数、自由函数或者两者兼备?

46得票7回答
Effective C++ 条款23:更喜欢非成员和非友元函数而不是成员函数

在考虑类设计时,特别是函数应该是成员函数还是非成员函数的问题上,我查阅了Effective c++中的第23条建议:优先使用非成员非友元函数。首先看到其中以Web浏览器为例的内容,感觉有些道理,但是书中所称的"方便函数"(指非成员函数)改变了类的状态,不是吗? 那么,我的第一个问题是,这些...

46得票4回答
在C++结构体/类中,非静态成员变量是否需要标记为volatile才能在成员函数中被视为volatile?

class MyClass { int x, y; void foo() volatile { // do stuff with x // do stuff with y } }; 我需要将x和y声明为volatile,还是所有...

40得票5回答
打印虚拟成员函数的地址

我正在尝试打印虚拟成员函数的地址。 如果我知道哪个类实现了该函数,我可以编写: print("address: %p", &A::func); 但是我想要做类似这样的事情: A *b = new B(); printf("address: %p", &b->fu...

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

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

38得票5回答
C++ typedef成员函数签名语法

我想为成员函数签名声明类型定义。全局函数的 typedef 如下所示:typedef int (function_signature)(int, int); typedef int (*function_pointer) (int, int); 但是我无法对成员函数执行相同的操作:typede...

36得票9回答
非静态成员作为非静态成员函数的默认参数

struct X { X():mem(42){} void f(int param = mem) //ERROR { //do something } private: int mem; }; 有没有人能给我一个理由,解释为什么这在C ++中是不合法...