为什么我不能在一个类的不同行中声明和定义成员变量?
Why can't I declare and define a member variable in different lines in a class?
正如您所看到的,在"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分配给a
3( 创建类型为Demo
的对象d
等等
但class Demo {
public:
int id;
int setID(int x)
{
id = x;
}
};
不是函数。它是一个类的声明。它不过是对一个实体的描述。不能在描述中执行命令。你可以说"这个类有int a
",这就是
相关文章:
- 如何在C++中声明/定义相互依赖的模板?
- C++概念是否允许我的类在声明/定义中指定它满足某些概念?
- MSVC:无法识别的模板声明/定义(使用 Clang/GCC 编译)
- 我可以重用同一个模板来声明/定义多个东西吗(而不复制模板代码)
- C++-模板类中模板函数的单独声明/定义
- 在C 中使用继承时,请避免使用未缴纳的函数声明/定义
- C++模板能否确定所声明/定义的实例是否为常量
- 如何在程序中声明/定义一次并在两个类中使用映射列表
- LBNF,C函数声明/定义,减少冲突
- 声明/定义返回具有自动返回类型的 valarray 的函数时的隔离错误
- #用{}和声明定义混淆
- CTOR 声明/定义中接受的 const 限定符(LLVM 错误?)
- C++ 从一个源文件中声明/定义的变量从另一个源文件访问另一个源文件
- 无法识别的模板声明/定义
- 只在.cpp中声明/定义静态方法可以吗
- 声明/定义自定义类定制对象的正确方法
- typedef声明定义未命名类时链接失败
- 用visual c++实现COM对象的声明/定义和实例化
- VS 2012中的显式模板声明/定义
- 命名空间内的友元函数声明/定义