您好我一直在做家庭作业,由于家庭作业规则我不允许使用全局变量。我已经对全局变量进行了研究,但无法真正了解我的变量是全局变量还是本地变量。变量在我的类中的构造函数中定义。这是我的标题的样子:
#include <string>
using namespace std;
class Team{
public:
string tColor;
string tName;
};
class Player{
public:
string pPos;
string pName;
};
class SocReg {
private:
Team *teams;// These are the variables Im not sure of
Player *players;// These are the variables Im not sure of
int playernum, teamnum; // These are the variables Im not sure of
public:
SocReg();
~SocReg();
void addTeam( string teamName, string color );
void removeTeam( string teamName );
void addPlayer( string teamName, string playerName, string playerPosition );
void removePlayer( string teamName, string playerName );
void displayAllTeams();
void displayPlayer( string playerName );
void displayTeam( string teamName );
// ...
// you may define additional member functions and data members,
// if necessary.
};
这个问题可能听起来太吵了,但我提前感谢你们这么困惑
答案 0 :(得分:4)
Team *teams;// These are the variables Im not sure of Player *players;// These are the variables Im not sure of int playernum, teamnum; // These are the variables Im not sure of
务实回答:这些变量既不是全局变量也不是本地变量。它们是成员变量。但无论谁给你这个任务肯定只是想确保你不使用全局变量,所以你会没事的。给学生一个class
和禁止成员变量的作业是完全没有意义的。
语言律师回答: “全局变量”和“成员变量”都不是官方术语。信不信由你,但ISO C ++标准的整个~1300-1400 PDF只包含3个“成员变量”实例和1个“全局变量”实例(我已在PDF草案中搜索过,但这并没有很大的不同)。
C ++标准§3.3.3/ 1中描述了一个局部变量,如下所示:
在块作用域中声明的变量是局部变量。
全局变量被官方称为“非局部变量”(§3.6.2)。根据定义,它与局部变量相反。
成员变量被正式称为“数据成员”,如§9.2/ 1所示:
类的成员是数据成员,成员函数(...),嵌套 类型和枚举器。
答案 1 :(得分:2)
全局变量是您可以在任何地方看到和更改的内容&#34;在代码中,即在任何特定类别之外。
它们被认为是有害的,因为当您更改全局变量时,您必须以某种方式知道可能会查看它的所有代码,以便了解更改可能产生的影响。这使你很难推理出你的代码。
所有变量都封装在对象中,并非全局变量。在C ++中,全局变量在类之外声明,或者使用&#34; static&#34;。
答案 2 :(得分:0)
它们都是类定义,没有声明变量。
所以没有全局变量。
例如:
// example.cpp
int BAR;
class foo {
int bar;
};
foo FOO;
void f() {
BAR = 0; // We can access global variable here
}
int main() {
foo FOO2;
BAR = -1; // We can access global variable here
return 0;
}
BAR和FOO是全局变量,可以全局访问。
class foo {
int bar;
};
仅仅是类foo的定义。
main()函数中的FOO2也不是全局变量,因为它位于main函数内部,无法通过外部函数访问。