Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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++;?_C++_Function - Fatal编程技术网

C++ 在c++;?

C++ 在c++;?,c++,function,C++,Function,我没有计划。我只是好奇,如果没有(),是否有任何方法可以调用没有参数的函数 例如,而不是 function(); 我怎样才能做到 function; 宏的任何可能功能: #include <iostream> void f() { std::cout << "Hello, World!"; } #define function f(); int main() { function; } #包括 void f(){std::cout在某些情

我没有计划。我只是好奇,如果没有
()
,是否有任何方法可以调用没有参数的函数

例如,而不是

function(); 
我怎样才能做到

function;

宏的任何可能功能:

#include <iostream>

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

#define function f();

int main() { function; }
#包括

void f(){std::cout在某些情况下,调用函数时不使用参数。例如,运算符重载和转换运算符

<>但是,用C++调用这种函数是不可能的。它会在语言中产生歧义。在C++中,函数名会被分解为函数的指针。< /P>
int foo();

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

  • 调用
    foo
    ,结果存储在
    var
    中,其类型为
    int
  • foo
    衰减为函数指针。指针存储在
    var
    中,其类型为
    int(*)(

如果我们允许函数不带父函数调用,都是合理的期望值。要求父函数是避免这种情况的最简单的方法。< /P> C++中有许多方法调用函数而不使用<代码>()例如,所有运算符重写都是用各自的操作符调用的,转换函数是由代码调用的,例如代码< >代码x;t y= x;< /c> >不,每个语言都有它的语法。在C或C++中调用函数必然需要括号(即使它们是空的)。函数的名称(不带以下括号)指其地址(例如初始化函数指针).@closer名称中有希腊字母,这个问题是关于调用一个空函数,该函数特别要求能够传递参数。我可以问一下您的用例吗?您想模仿Delphi吗?如果是,祝您好运。顺便说一句,我甚至在Delphi代码中总是使用括号。我讨厌省略它们。@JaMiT我不喜欢k它回答了这个问题。文本很清楚,给定一个函数

fn
,OP希望能够将其称为
fn
,而不是
fn()
。甚至标题上也写着“no()”
std::invoke(函数)
确实有参数——调用
std::invoke
。按照OP的要求去做。但是不要这样做。@eerorika是的……我不记得上次使用宏是什么时候了(除了
#include
s).@eerorika为什么我不应该这样做?@Duffka因为宏是邪恶的。它们只适用于那些知道最好不要使用它们的高级程序员。这样做的唯一目的是让其他人更难理解程序,这可能会在将来当你试图修改程序并执行类似于命令的操作时包括你自己“@Duffka另一个原因是,它们不依赖于范围规则。更多内容是:很好地解释了为什么没有实现。但并没有真正回答这个问题。@πάντα”ῥεῖ 当然可以:“以C++的方式调用任意函数是不可能的。”一个较长的方式说“不”。这是对“这是可能的”问题的直接回答。