c++重载箭头运算符
2018-03-18 04:52
267 查看
一句话:对箭头的返回值做->操作,如果返回值重载了->则调用重载的。
a)如果返回的是一个指针将调用内置的箭头运算符。执行相当于(*(p.operator->()).mem;的操作。 b)如果返回是一个重载了箭头运算符的对象,则继续对该对象调用其重载了的箭头运算符,直到返回的是一个指针,将对该指针调用a)的操作。操作相当于(*(p.operator->().operator->())).mem;
结果:
myClass ->() is called!
firstClass ->() is called!
firstClass action() is called!
a)如果返回的是一个指针将调用内置的箭头运算符。执行相当于(*(p.operator->()).mem;的操作。 b)如果返回是一个重载了箭头运算符的对象,则继续对该对象调用其重载了的箭头运算符,直到返回的是一个指针,将对该指针调用a)的操作。操作相当于(*(p.operator->().operator->())).mem;
#include <iostream> class firstClass { public: firstClass* operator->() { std::cout << "firstClass ->() is called!" << std::endl; return this; } void action() { std::cout << "firstClass action() is called!" << std::endl; return; } }; class myClass { firstClass firstObj; public: firstClass& operator->() { std::cout << "myClass ->() is called!" << std::endl; return firstObj; } void action() { std::cout << "myClass action() is called!" << std::endl; return; } }; int main() { myClass obj; obj->action(); return 0; }
结果:
myClass ->() is called!
firstClass ->() is called!
firstClass action() is called!
相关文章推荐
- C++箭头(->)运算符的重载
- C++箭头运算符及其重载
- C++箭头(->)运算符的重载
- <<C++ Primer>>中文版 重载箭头运算符的理解
- C++中重载箭头运算符详解
- C++重载 箭头运算符
- C++ 解引用(*)和箭头(->)运算符的重载
- C++ 下标运算符 重载
- c++ 运算符的重载
- 【C++】输入输出运算符的重载
- c++中运算符的重载
- C++之双目/单目等运算符的重载
- C++题目一道: 重载`->': 您真的懂成员访问运算符的重载吗?
- C++解引用与箭头操作符重载
- 重载箭头运算符->
- C++哪些运算符不能重载
- C++的运算符重载
- 【C++】强制类型转换运算符的重载
- C++中哪些运算符不可重载
- C++ 流运算符的重载