【问题标题】:Can in this way be declared a global object class?可以这样声明一个全局对象类吗?
【发布时间】:2014-01-04 22:22:39
【问题描述】:
我不知道为什么,但是这段代码可以工作,这个记录}r; 是什么以及它是如何工作的?可以这样声明一个全局对象类吗?
#include <iostream>
class А
{
public:
А()
{
std::cout << "Hello World";
}
}r;
int main()
{
}
【问题讨论】:
标签:
c++
class
main
global-object
【解决方案1】:
这声明了一个名为 r 的全局变量,其类型为 A。
和这个一样
class A { ... };
A r;
int main() { ... }
【解决方案2】:
可以这样声明一个全局对象类吗?
嗯,是的!基本上,r 有一个А 类型的全局变量。 C++ 从 C 继承了某种语法,使您能够在类/结构定义之后声明变量。你经常可以从 C 中看到类似的东西
struct vertex {
float x, y;
} my_vertex; // Declares a variable of type vertex
在 C++ 中,struct 与 class 相同,但默认访问说明符除外。
您可能想知道在类定义之后的分号是什么。所以基本上一个类定义为
class my_class {};
大括号后面紧跟分号表示没有变量。
您还可以通过逗号分隔多个变量来声明多个变量。
class my_class {} x, y, z;
【解决方案3】:
它创建一个名为r 的class A 实例。它与 doint int r; 几乎相同,后者将在该位置上生成一个全局 int。