11得票3回答
C++是否有一个名为`size(object)`的自由函数?

大多数人似乎通过使用my_string.size()来查找一个字符串的大小,这种方法非常有效。最近我在课堂作业中执行了一个任务,我...if (size(my_string) < 5) store[counter].setWeight(stoi(my_string)); 与其.....

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

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

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

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

9得票2回答
从左边用一个常数乘以一个对象

我有一个名为Matrix的类,它重载了*运算符,可以进行标量和矩阵乘法。 template <class T> class Matrix { public: // ... Matrix operator*(T scalar) const; ...

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

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

8得票3回答
类模板的友元函数

我有一个类模板Foo<T>。 我想要实现一个非成员函数Bar,它接受两个Foo并返回一个Foo。我希望Bar是一个非成员函数,因为调用者写Bar(f1, f2)比f1.Bar(f2)更自然。我也希望Bar是inline的,因为计算是微不足道的且经常发生。 template &l...

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

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

7得票3回答
在相同名称成员函数的情况下,ADL是什么意思?

现在的情况是,一些成员函数“bar::Bar::frobnicate”希望利用ADL从某个未知命名空间中查找一个与其名称相同的函数,在一个具有相同名称的函数中使用。然而,它只能找到自己的名称。 测试用例 (注意,实际上,“Bar”是一个与“Foo”无关的模板;这只是可重现的最小测试用例) ...

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

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