声明与类的定义

时间:2019-06-25 12:51:04

标签: c++

关于类声明和类定义,我有一个简短的问题。

因此,我可以想到四种不同的类代码场景:

哪些是合格的声明,哪些是合格的定义?为什么?

TIA。

1)

class foo_empty{};

2,3)

class foo_NoMemDef{
   int f1(); //Member function declaration(?), no body
  //int i; (consider including this as a separate case 3)
};

4)

class foo_final{
   int f2(){}
};

3 个答案:

答案 0 :(得分:6)

  

哪些是声明,哪些是定义?

所有示例都显示类定义(也是声明)。不是定义的类声明如下:

class Foo;

一旦您通过{}“打开/关闭”一个类,就会提供一个定义。

答案 1 :(得分:2)

您的所有示例都是类定义,因为它们都最终定义了类;您以后不能再扩展类定义。请注意,为类的一种方法提供实现不会扩展类的接口,因此不会影响类本身的定义。

一个引入类型为“ class”的标签“ foo”的类声明为

class foo;

答案 2 :(得分:0)

这些都是带有声明的定义。 c ++中的声明(本身)没有{}。

在头文件中,您可能会说类似

public class student{

public void UpdateGpa(float grade, int credits);

private float gpa;
private string name;
private int credits;

} 

定义了上面的学生示例,并声明了updategpa函数。然后通常在cpp文件中定义它。可能会说

public void UpdateGpa(float grade, int credits){

this.credits+=credits;

gpa= gpa formula

}

这将是UpdateGpa函数的定义。如果您看不到该函数,并且仅从所看到的内容知道其工作原理,则将声明所有内容。如果提供了详细说明函数功能的代码,则将定义所有内容。