为什么我不能在一个类的不同行中声明和定义成员变量?

Why can't I declare and define a member variable in different lines in a class?

本文关键字:声明 定义 变量 成员 不能 一个 为什么      更新时间:2023-10-16
正如您所看到的,在"Demo"类中,我声明了"id"。但我无法在下一行中初始化它(我知道,我本可以在同一行中完成,但仍然如此(。在主函数中出现"a"的情况下,我可以做同样的事情。为什么?
#include <iostream>
using namespace std;
class Demo {
public:
int id;
id = 90;
int setID(int x)
{
id = x;
}
};
int main() {
int a;
a = 90;
Demo d;
d.setID(50);
cout<<a<<endl;
return 0;
}

函数体是一系列语句。类主体是一系列成员声明。大多数类型的语句不能进入类主体,因为它们不是有效的成员声明。如果"可运行代码"嵌套在函数中,则只能将其放入类中。

如果每次实例化类时都要运行一段代码,请将其放入构造函数中。如果有一段代码只想在定义类时运行一次,那么在C++中就没有这样做的机制。

因为这就是语言的工作方式。CCD_ 1是一个函数。在函数内部,命令一个接一个地执行:

1( 创建类型为int的变量a。2( 将值90分配给a3( 创建类型为Demo的对象d等等

class Demo { public: int id; int setID(int x) { id = x; } };

不是函数。它是一个类的声明。它不过是对一个实体的描述。不能在描述中执行命令。你可以说"这个类有int a",这就是