在定义函数时,您是否也在声明它?

时间:2017-05-19 16:53:45

标签: c++

在课堂体中定义一个函数时,你总是声明它或者你会怎么说?这是一个例子:

class ss 
{
ss() {}
};

然后我们是否声明构造函数,定义构造函数或声明AND定义构造函数。你能怎么说呢?

3 个答案:

答案 0 :(得分:5)

你们都在声明和定义构造函数。

声明只会如下:

class ss 
{
  ss();
}

您可以在课堂外单独定义和声明,以显示两者之间的明显区别:

class ss 
{
  ss(); //declaration
}

ss::ss() {} // definition

根据定义,定义也是一个声明。

声明只是函数的签名,定义包括实际的函数体。

答案 1 :(得分:3)

这不是特定于函数,而是C ++中的一般规则:定义是一种可能的声明类型。(这来自C ++语法)。这意味着每个定义也都是一个声明。

因此,在您的情况下,构造函数既由声明ss() {}声明和定义。

答案 2 :(得分:1)

这既是定义又是宣言。

以下信息取自C ++标准文件:(n4659)

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf

例如考虑以下功能

 int max(int a, int b, int c)
 { 
    int m = (a > b) ? a : b; 
    return (m > c) ? m : c; 
 } 
  1. int(函数的返回类型)是声明说明符
  2. max(int a,int b,int c)是声明者;
  3. {/ * ... * /}是函数体。