C++ 特别认可的函数(名称)列表。 (例如运算符++,开始)
List of (names of) functions that are specially recognized by C++. (e.g. operator++,begin)
刚学了一点C++,发现了一些特殊的函数。
示例 1
bool operator<(const B& b1,const B& b2)
bool B::operator<(const B& b2) const
//recognized by std::sort
示例 2
MyIterator C::begin();
MyIterator begin(C& c);
//recognized by range-based loop
据我所知,这些函数在 C++ 中特别。
(此外,在每一对中,它们以某种方式以相同的方式被识别。)
问题
被识别为特殊的所有函数的列表是什么?
换句话说,C++(官方)规范中是否有任何部分总结了它们的列表+它们有多特别?
我相信如果我在没有这些知识的情况下盲目编码,我可能会犯一些愚蠢的错误,尤其是在与 std::
class.
交互时
抱歉,主题名称不太合理,但我想不出更好的名称。
IMO,以下在 C++ 中被特殊处理:
main()
,其中有超过 1 个有效 syntax
- 构造函数和析构函数
- 某些特殊关键字,用作类似函数:4 次强制转换 (
static, dynamic, const, reinterpret
) 和 typeid
begin()
& end()
方法或函数在处理基于范围的 for
循环时被特殊对待
- 各种超载
运营商
- 转换运算符,例如
struct A { operator int (); };
可能缺少一些项目。不确定,如果一切都列在标准的某处,几乎不可能。
但是,您担心弄乱 namespace std
是错误的。它确实包含一些标准功能,但除非你不这样做 using namespace std
,否则不用担心会搞砸。
刚学了一点C++,发现了一些特殊的函数。
示例 1
bool operator<(const B& b1,const B& b2)
bool B::operator<(const B& b2) const
//recognized by std::sort
示例 2
MyIterator C::begin();
MyIterator begin(C& c);
//recognized by range-based loop
据我所知,这些函数在 C++ 中特别。
(此外,在每一对中,它们以某种方式以相同的方式被识别。)
问题
被识别为特殊的所有函数的列表是什么?
换句话说,C++(官方)规范中是否有任何部分总结了它们的列表+它们有多特别?
我相信如果我在没有这些知识的情况下盲目编码,我可能会犯一些愚蠢的错误,尤其是在与 std::
class.
抱歉,主题名称不太合理,但我想不出更好的名称。
IMO,以下在 C++ 中被特殊处理:
main()
,其中有超过 1 个有效 syntax- 构造函数和析构函数
- 某些特殊关键字,用作类似函数:4 次强制转换 (
static, dynamic, const, reinterpret
) 和typeid
begin()
&end()
方法或函数在处理基于范围的for
循环时被特殊对待- 各种超载 运营商
- 转换运算符,例如
struct A { operator int (); };
可能缺少一些项目。不确定,如果一切都列在标准的某处,几乎不可能。
但是,您担心弄乱 namespace std
是错误的。它确实包含一些标准功能,但除非你不这样做 using namespace std
,否则不用担心会搞砸。