0

我是新来的,我正在学习 C++。我找不到以下问题的答案:

有一堂课Player。以下短语声明了什么?

static Player * Player::bestPlayer = NULL;

我也很困惑:

string &a = b;
4

5 回答 5

2

关于第一个:很难想象一个合法的案例。(也许 ifPlayer是一个命名空间,但即便如此,第一个声明也bestPlayer必须在命名空间内。并且不能是定义,因为这一行是定义。)

大概的意思是这样的:

class Player
{
    //  ...
    static Player* bestPlayer;
    //  ...
};

进而:

Player* Player::bestPlayer = NULL;

请注意,关键字static 必须在类定义中,而不是在对象本身的定义上,并且初始化只能在对象的定义上。

至于第二个,它将符号声明b为 的别名 a。你所做的任何事情都会a影响b,反之亦然,你尝试做的任何事情都会表明它们是同一个对象。(例如&a == &b)。这称为引用,虽然很少有理由将其用作局部变量,但它们被广泛用作函数参数,并在特定场景中用作返回值。

于 2013-09-26T13:17:29.777 回答
1

这些意味着:

  1. 类型的静态成员Player*被初始化为NULL. static删除声明在类之外的关键字id。如果声明在内部,则删除范围解析运算符。

  2. 创建类型的引用变量string并将引用分配为bas

    string b;  
    string &a = b;
    
于 2013-09-26T12:59:55.570 回答
0

第一个将 Payer 类的静态成员初始化为 NULL(注意成员是指针)。第二个用另一个字符串初始化对一个字符串的引用

于 2013-09-26T12:58:46.400 回答
0
Player * Player::bestPlayer = NULL;

将type的static成员初始化为。这被放置在某个文件中,它属于声明,它可能看起来像这样:bestPlayerPlayer*NULL.cpp

// Player.h
class Player {
public:
    static Player* bestPlayer;
    ...
};

对于您的第二个问题,它声明了astd::stringobject的引用b

std::string b;
std::string &a = b;

看看:C++中的指针变量和引用变量有什么区别?

于 2013-09-26T12:59:39.777 回答
0

第一个片段中的代码是 Player 类的静态成员“bestPlayer”的定义。

如果一个类,静态成员在所有实例之间共享。它不是对象(类的实例)的成员,而是类本身的成员。

它通常用于创建单例(谷歌单例模式)。

第二个片段中的代码为字符串变量“b”创建了一个名为“a”的引用。c++ 中的引用类似于别名。它类似于指针。

于 2013-09-26T13:15:44.927 回答