类定义和类声明

boo*_*ror 4 c++ class

我正在阅读使用c ++(Bjarne Stroustrup)的编程原理和练习,

9.4.4定义成员函数,第312页

1.

类定义中编写成员函数的定义有两个影响......

2.

除非你知道......否则不要将成员函数体放在类声明中

作者写错了吗?它谈到同样的事情,为什么第一句是"阶级定义",第二句是"阶级宣言"?

谢谢

And*_*owl 7

作者写错了吗?

没错,但不精确.类声明可以是前向声明,例如:

class X;
Run Code Online (Sandbox Code Playgroud)

这只是让编译器知道该类的存在,但是没有指定该类具有哪些成员,哪些基类等等(这就是类定义的作用).

但是,声明也可以是一个定义,例如:

class X
{
    // ...
};
Run Code Online (Sandbox Code Playgroud)

所以从某种意义上说,既然定义也是一个宣言,那句话就没有错.

在常识性假设下,判决是错误的,即声明是指一种不是定义声明,但在处理这些术语时,最好记住它们的正式定义.

  • 这是严格错误的.你的例子是*forward*声明.一般声明可以是前瞻性声明或定义.引用的作者并非绝对错误,只是不合理地不精确. (2认同)