【发布时间】:2015-03-01 14:07:51
【问题描述】:
我一直都知道C++的特殊成员函数有:
- 默认构造函数
- 复制构造函数
- 复制赋值运算符
- 析构函数
- 移动构造函数
- 移动赋值运算符
现在我正在阅读 Meyers Effective C++ 书籍,并意识到还有一对 address-of 运算符。
我可以这样重新定义它:
class A
{
public:
A* operator&()
{
std::cout << "Address of operator" << std::endl;
}
};
int main()
{
A a;
B* b = &a; // Will call address-of operator.
}
为什么在 C++ 标准第 12 节(特殊成员函数)中没有关于此运算符的字样。
【问题讨论】:
-
可能是因为它不被视为一个特殊成员函数,而是一个
operator,并且包含在该部分中? -
πάντα ῥεῖ 复制赋值运算符也是运算符,但定义明确
-
“这也是C++面试中常见的问题。”我不这么认为...
-
@VladfromMoscow:我不想为一家希望我熟记 C++ 标准的章节编号的公司工作。如果他们在面试时带了一份标准的副本并想讨论其中的一部分,那就够公平了。
标签: c++ c++11 assignment-operator default-constructor