在课堂体中定义一个函数时,你总是声明它或者你会怎么说?这是一个例子:
class ss
{
ss() {}
};
然后我们是否声明构造函数,定义构造函数或声明AND定义构造函数。你能怎么说呢?
答案 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;
}