10得票3回答
静态、非成员或静态非成员函数?

每当我有一些“实用型”功能时,我总会想知道哪个选项最好。例如,在打印消息结构(自己的或外部的)、一些编码/解码代码或者在我正在处理的上下文中仅使用几个有用的转换函数。 我考虑的选项有: 1)helper类/结构体中的静态函数。struct helper { static bool ...

32得票4回答
使用Doxygen记录C++函数

我有一个项目,我正在使用Doxygen来生成文档。类的文档已经很好了,但我还有一些非成员函数用来创建对象等。我也希望对它们进行文档化,但无论我尝试什么方法,Doxygen都不会从我放在函数上面的注释中生成文档。为什么Doxygen不会为全局命名空间中的函数生成文档,我需要做什么才能让它工作?

7得票3回答
C++:非成员函数和静态成员函数的区别?

简单的问题:静态成员函数和非成员函数之间有什么区别?静态成员函数可以不需要对象就能调用(只需使用类标识符),而非成员函数呢?在这里,我既想概念上理解又想了解其功能性。 非成员函数从概念上来说并不是静态的。

7得票3回答
为什么C++11的字符串新函数(stod,stof)不是字符串类的成员函数?

为什么C++11中<string>头文件的新函数(stod, stof, stoull)不是string类的成员函数? 难道写mystring.stod(...)而不是stod(mystring,...)不符合更多的C++规范吗?

13得票2回答
自由函数的部分模板特化 - 最佳实践

作为大多数C++程序员应该知道的,自由函数的部分模板特化是不允许的。例如,以下代码是非法的C++代码: template <class T, int N> T mul(const T& x) { return x * N; } template <class T&...

22得票2回答
C++赋值运算符可以作为自由函数吗?

我正在尝试类似这样的东西:Foo & operator=(Foo & to, const Bar &from); 但是我遇到了这个错误:E2239 'operator =(Foo &, const Bar &)' must be a member fun...

9得票1回答
将重载运算符重构为非成员函数会破坏任何代码吗?

考虑一个拥有重载加法运算符+=和+的传统类模板。 template<class T> class X { public: X() = default; /* implicict */ X(T v): val(v) {} X<T>& o...

10得票1回答
C++中友元的非常规用法

我知道在封装方面使用friend关键字的一般用例,但有几次我需要friend关键字只是为了“完成工作”。这些用例让我感到不满意,所以我想知道是否有其他替代方法。以下是第一个最简单的示例: struct Foo{ enum class Bar{ a=1,b=2,c=4 }; ...

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

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

19得票6回答
Python中的非成员函数与成员函数

我对Python相对较新,并且很难将该语言的特性与我在C ++和Java背景下养成的习惯结合起来。 我目前遇到的问题与封装有关,具体而言是Meyer的“Effective C++”中第23项最好概括的一个想法: 优先使用非成员非友元函数而不是成员函数。 暂时忽略缺少friend机...