C++ 如何区分函数的声明和使用?

C++ 如何区分函数的声明和使用?,c++,syntax,function-calls,function-declaration,C++,Syntax,Function Calls,Function Declaration,我在代码中有以下结构: while (x > 0) { something; aaa::bbb::ccc some_name( x, y ); } 我不明白什么叫什么名字(。如果是函数调用,为什么需要指定其时间aaa::bbb::ccc。如果是函数声明,为什么在while循环中执行,为什么不指定参数类型?在函数调用中不指定返回类型,因此这不可能是函数调用 正如Pubby指出的,它很可能是一个对象定义。您定义了一个名为some\

我在代码中有以下结构:

while (x > 0) {
     something;
     aaa::bbb::ccc some_name(
        x,
        y
     );
}

我不明白什么叫什么名字(。如果是函数调用,为什么需要指定其时间
aaa::bbb::ccc
。如果是函数声明,为什么在while循环中执行,为什么不指定参数类型?

在函数调用中不指定返回类型,因此这不可能是函数调用


正如Pubby指出的,它很可能是一个对象定义。您定义了一个名为
some\u name
aaa::bbb::ccc
类型的对象,并将
x
y
传递给构造函数。

您没有在函数调用中指定返回类型,因此这不可能是函数调用


正如Pubby指出的,这很可能是一个对象定义。你定义一个名为
的对象,它的类型是
aaa::bbb::ccc
,然后将
x
y
传递给构造函数。

我不太确定你在做什么,但是

::
< C++ >被称为<代码>范围运算符< /代码>,用于访问<代码>命名空间< /> > > <代码>变量>命名空间< /代码>或<代码>静态< /代码>类成员。

通常函数-声明和定义出现在函数和方法之外。因此您的代码没有任何意义


请参阅关于范围运算符。以及声明与定义。

我不太确定您在做什么,但是

::
< C++ >被称为<代码>范围运算符< /代码>,用于访问<代码>命名空间< /> > > <代码>变量>命名空间< /代码>或<代码>静态< /代码>类成员。

通常函数-声明和定义出现在函数和方法之外。因此您的代码没有任何意义


请参阅关于作用域运算符。以及声明与定义。

在这种特殊情况下,它可能通过使用参数
x
y
调用其双参数构造函数来构造
aaa::bbb::ccc
类型的对象


它在循环中完成的原因可能是对象在其构造函数和/或析构函数中做了一些有用的工作(例如,它可能是某种形式的范围保护).

在这种特殊情况下,它可能通过调用带有参数
x
y
的双参数构造函数来构造类型为
aaa::bbb::ccc
的对象


它在循环中完成的原因可能是对象在其构造函数和/或析构函数中做了一些有用的工作(例如,它可能是某种形式的范围保护).

发布实际代码。::是范围解析运算符。bbb一个ccc可能是一些静态成员或方法。发布实际代码。::是范围解析运算符。bbb一个ccc可能是一些静态成员或方法。@Pubby,我想你的评论解释了这一点。@Pubby它定义了一个本地对象。构造是定义的副作用;它确保新定义的对象被正确初始化。@析构函数的JamesKanze也可能有有趣的副作用:)@Pubby,我想你的评论解释了它。@Pubby它定义了一个本地对象。构造是定义的副作用;它确保新定义的对象被正确初始化。@JamesKanze析构函数可能也有有趣的副作用:)当然,如果
x
y
名称类型,它是一个函数声明。在这种简单的情况下,这通常是非常明显的(命名约定也有帮助)。在更复杂的情况下,它可能是不明确的——请参阅“最麻烦的解析”。当然,如果
x
y
名称类型,它就是一个函数声明。在这种简单的情况下,这通常是非常明显的(命名约定也有帮助)。在更复杂的情况下,它可能是不明确的——请参阅“最麻烦的解析”。“通常声明和定义出现在函数之外”?我当然广泛使用局部变量,这看起来很像局部变量的定义。@JamesKanze对不起,我不够具体。我说的是函数声明和定义。谢谢您的提示。“通常声明和定义出现在函数之外”?我当然广泛使用局部变量,这看起来很像局部变量的定义。@JamesKanze对不起,我不够具体。我说的是函数声明和定义。谢谢你的提示。