Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 重载运算符是否有地址?_C++ - Fatal编程技术网

C++ 重载运算符是否有地址?

C++ 重载运算符是否有地址?,c++,C++,重载运算符是否有地址,我可以将它们放在向量中,例如vectorv={&operator(+),&operator(-),&operator(*),&operator(/)},然后如果我写这个inta=1(*v[0])2它等于a=1+2=3?你可以使用指针在那里运行并存储lambda。以这种方式: auto plus = [](auto a, auto b) { return a + b; } auto minus = [](auto a, auto b) { return a - b; } ..

重载运算符是否有地址,我可以将它们放在向量中,例如
vectorv={&operator(+),&operator(-),&operator(*),&operator(/)},然后如果我写这个
inta=1(*v[0])2
它等于
a=1+2=3

你可以使用指针在那里运行并存储lambda。以这种方式:

auto plus = [](auto a, auto b) { return a + b; }
auto minus = [](auto a, auto b) { return a - b; }
...
vector<decltype(plus)> v = {plus, minus, ...}
auto plus=[](自动a,自动b){返回a+b;}
自动减=[](自动a,自动b){返回a-b;}
...
向量v={正,负,…}

您可以使用指针在那里运行和存储lambda。以这种方式:

auto plus = [](auto a, auto b) { return a + b; }
auto minus = [](auto a, auto b) { return a - b; }
...
vector<decltype(plus)> v = {plus, minus, ...}
auto plus=[](自动a,自动b){返回a+b;}
自动减=[](自动a,自动b){返回a-b;}
...
向量v={正,负,…}

事实上,是的,只是不适合内置。重载运算符基本上只是函数。你能澄清一下你是指内置运算符还是重载运算符吗?重载运算符1)“例如
向量v={&operator(+),&operator(-),&operator(*),&operator(/)};
”这不会编译,因为
运算符+
的实际类型取决于它的定义,但它永远不会等于
int
。除此之外,没有所谓的
操作符(+)
(它是
操作符+
)。2) “如果我写这个
inta=1(*v[0])2
它等于
a=1+2=3
?”这也不会编译。用法需要作为常规函数指针。也许函数运算符(例如加号、减号等)对您更有用?您可以将重载(或非重载)运算符包装在lambda中,
auto v=vector{[](Foo const&rhs,Foo const&lhs){return rhs+lhs;}向量v={&operator(+),&operator(-),&operator(*),&operator(/)};
”这不会编译,因为
运算符+
的实际类型取决于它的定义,但它永远不会等于
int
。除此之外,没有所谓的
操作符(+)
(它是
操作符+
)。2) “如果我写这个
inta=1(*v[0])2
它等于
a=1+2=3
?”这也不会编译。用法需要作为常规函数指针。也许函数运算符(例如加号、减号等)对您更有用?您可以将重载(或非重载)运算符包装在lambda中,
auto v=vector{[](Foo const&rhs,Foo const&lhs){return rhs+lhs;}请不要对代码块使用反勾号
`
,而是在每个代码行前面使用四个空格。向量
的类型是什么?我一点也不熟悉这种新的奇特的演绎法,但是你需要在某个地方声明类型,不是吗?我更新了我的答案请不要对代码块使用反勾号
`
,而是在每个代码行前面使用四个空格。
向量的类型是什么?我一点也不熟悉那些新的花式演绎的东西,但是你需要在某个地方声明类型,不是吗?我更新了我的答案