() 左侧 C++ 上的运算符重载
() operator overloading on left side c++
我有一个带有重载 () 运算符的类:
class Animal
{
public:
string sound;
Animal (string a): sound(a) {}
void operator()()
{
cout<<sound<<endl;
}
};
int main()
{
Animal dog("hau hau");
dog();
}
但是,我是否有可能在左侧使用 () 获得相同的结果?
()dog;
我知道我可能永远不需要这个,但我只是好奇是否有可能
不,你不能这样做:对于这样的结构,C++没有语法。
重载operator ()
的目的是让类的对象参与函数调用表达式,其中对象表示正在调用的函数。C++没有用于调用函数的语法,也没有在主表达式(在您的情况下为标识符)之前使用括号的语法,因此问题的答案是"否"。
不,因为在()
之前必须有一个主表达式。
还要记住,编译器会向后读取,所以他不会知道这应该是一个函数。
No.这是不可能的。不是以理智、安全、符合标准的方式。
- 左侧
()
仅用于铸造 - #YAGNI
相关文章:
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- <T> 通过模板化运算符重载将 std::complex 乘以双倍
- C++20概念:需要运算符重载
- 使用赋值运算符重载从类中返回jobject
- 在运算符重载定义中使用成员函数(const错误)
- 字节到位运算符重载C++
- 为什么在运算符重载时需要参考?
- 类中 c++ 的运算符 + 重载
- 算术复合运算符重载为非成员
- 运算符重载 (+),用于添加两个具有 C++ 的数组
- 交换运算符 + 重载会导致无限递归
- 如何理解新的运算符重载?
- 向量保持复数的运算符重载
- 如何创建运算符重载?
- 链接列表运算符重载没有打印出我想要的内容
- C++:需要帮助了解运算符重载错误
- 使用模板化运算符重载 XOR 运算符失败
- 如何确保接受的C++模板类型使运算符重载?
- 运算符重载使用运算符+添加类模板