我是新来的,我正在学习C ++。我无法找到以下问题的答案:
有一个班级Player
。以下短语声明了什么?
static Player * Player::bestPlayer = NULL;
我也很困惑:
string &a = b;
答案 0 :(得分:2)
关于第一个问题:很难想象会出现这样的情况
合法。 (也许如果Player
是命名空间,但即便如此,
bestPlayer
的第一个声明必须在。{1}}内
命名空间。并且不能定义,因为这条线是
定义。)
可能意味着:
class Player
{
// ...
static Player* bestPlayer;
// ...
};
然后:
Player* Player::bestPlayer = NULL;
请注意,关键字static
必须在班级中
定义,而不是对象本身的定义,和
初始化只能在定义上
对象
至于第二个,它声明符号b
是别名
a
。您对a
所做的任何操作都会影响b
,反之亦然
您尝试做的任何事情都会将它们显示为同一个对象。
(例如&a == &b
)。这被称为参考,而且
很少有任何理由将其作为本地使用
变量,它们被广泛用作函数参数,并在
特定场景作为返回值。
答案 1 :(得分:1)
这些意思是:
Player*
类型的静态成员初始化为NULL
。删除关键字static
id,声明在类之外。如果声明在里面,则删除范围解析运算符。
创建string
类型的引用变量,并将b
的引用分配为
string b;
string &a = b;
答案 2 :(得分:0)
第一个将Payer类的静态成员初始化为NULL(注意成员是指针)。第二个用另一个字符串初始化对字符串的引用
答案 3 :(得分:0)
Player * Player::bestPlayer = NULL;
将static
类型的bestPlayer
成员Player*
初始化为NULL
。这放在一些.cpp
文件中,它属于声明,可能如下所示:
// Player.h
class Player {
public:
static Player* bestPlayer;
...
};
对于您的第二个问题,它向a
对象std::string
声明了引用b
:
std::string b;
std::string &a = b;
查看:What are the differences between a pointer variable and a reference variable in C++?
答案 4 :(得分:0)
第一个片段中的代码是Player类的静态成员“bestPlayer”的定义。
静态成员在所有实例(如果是类)之间共享。它不是对象(类的实例)的成员,而是类本身的成员。
它通常用于创建单身人士(谷歌单身人士模式)。
第二个代码段中的代码为字符串变量“b”创建名为“a”的引用。 c ++中的引用类似于别名。它与指针类似。