我没有程序。我只是很好奇,是否可以在没有()
的情况下调用没有参数的函数?
例如代替
function();
我怎么做
function;
答案 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; }