有没有一种方法可以在C ++中调用不带()的函数?

时间:2020-09-07 22:55:10

标签: c++ function

我没有程序。我只是很好奇,是否可以在没有()的情况下调用没有参数的函数?

例如代替

function(); 

我怎么做

function;

2 个答案:

答案 0 :(得分:3)

在某些情况下,调用函数时不带括号。例如,运算符重载和转换运算符。

但是,在C ++中无法以这种方式调用任意函数。这会在语言上造成歧义。在C ++中,函数名称会衰减为指向该函数的指针。

int foo();

auto var = foo;

使用您建议的语法,这可以做以下两件事之一:

  • foo被调用并将结果存储在类型为var的{​​{1}}中。
  • int衰减为函数指针。指针存储在foo类型的var中。

如果我们允许在不带括号的情况下调用函数,那么两者都是合理的期望。避免这种情况是最简单的方法。

答案 1 :(得分:0)

使用宏可能发生的一切:

#include <iostream>

void f() { std::cout << "Hello, World!"; }

#define function f();

int main() { function; }