如何在类内通过this关键字调用重载的()运算符?
C++ 类内调用重载
operator() 的规范写法 在类成员函数中调用重载的括号运算符,有两种行业普遍认可的规范写法,可读性都比(*this)(5)更好:
- 写法1:省略this的显式运算符调用
直接写operator()(5)即可,不需要加任何前缀,符合C++成员函数的调用规则,简洁无歧义,适合没有强制要求成员访问必须带this前缀的编码规范。 - 写法2:带this前缀的显式运算符调用
写作this->operator()(5),明确标记是调用当前对象的成员函数,适配要求所有成员访问必须显式带this的编码规范。
修改后的代码示例如下:
struct MyStruct { void operator()(int a) { // Do something with "a" } void myFunc() { // 可选写法1 operator()(5); // 可选写法2 // this->operator()(5); } };
补充说明:原来的(*this)(5)写法本身完全符合C++语法规则,只是可读性不如显式调用运算符函数直观,你可以根据自己团队的编码规范选择合适的写法。
内容的提问来源于stack exchange,提问作者MinaSabrawy
相关产品推荐
相关产品推荐

