C++ 我们可以通过在类外定义一个类变量来生成全局变量吗;点“;操作人员
为什么我们不能写这个C++ 我们可以通过在类外定义一个类变量来生成全局变量吗;点“;操作人员,c++,variable-assignment,C++,Variable Assignment,为什么我们不能写这个b1.x=10在主功能之外? 如果我们写入b1.x=10,则显示错误在主函数之外,为什么?因为,b1.x=10是一个赋值语句,不能出现在文件范围中 但是,您可以使用初始化来提供初始值。差不多 class abc { public: int x; }; abc b1; b1.x=10; int main() { } 您所做的是给变量赋值。这不能在函数之外完成 您可以做的是在声明变量时初始化该变量 abc b1 = {10}; 你试图将程序性语句置于任
b1.x=10代码>在主功能之外?
如果我们写入b1.x=10,则显示错误代码>在主函数之外,为什么?因为,b1.x=10代码>是一个赋值语句,不能出现在文件范围中
但是,您可以使用初始化来提供初始值。差不多
class abc
{
public:
int x;
};
abc b1;
b1.x=10;
int main()
{
}
您所做的是给变量赋值。这不能在函数之外完成
您可以做的是在声明变量时初始化该变量
abc b1 = {10};
你试图将程序性语句置于任何函数之外;这是不允许的。这可能令人困惑的原因有两个:
1) 也许您已经习惯了可以在任何函数之外使用代码的语言。例如,在perl中,整个文件是一个执行的脚本,定义和调用函数完全是一个选择问题。在C++中不是这样;用于执行go in函数的语句
2) b1.x=10
可能类似于一个声明,它确实可以超出任何函数。但事实并非如此。这是一份声明。相比之下,函数外部的int x=10
是一个定义(一种声明类型,它恰好包含一个与赋值表达式语句非常相似的初始值设定项)。我不完全理解你的问题,因为它太短,解释不多,但我会试一试
如果您试图在函数作用域之外赋值,则C++不允许这样做。C++不象Python/JavaScript那样工作,在这里用点运算符赋值,并且允许在范围之外写入它们。
如果试图在作用域外将class x变量设置为始终为10,则查找的是静态变量。类成员是在类内定义的,而不是在类外定义的:
abc b1 = { 10 };
你的部分问题是你认为b1.x
是一个类成员。这会混淆类和对象abc
是一个类,abc::x
是一个类成员b1.x
是对象的成员。您不能定义对象的成员。为什么不在提问之前尝试编译它?@SouravGhosh那么它们至少应该包含错误消息。我们很可能会找到一个复制目标。如果我们可以在函数外部定义任何非类变量使其成为全局变量,为什么我们不能在函数外部定义类变量或非类变量?@sampadsaha:实际上,因为sizeof(class abc)
必须有一个值。如果以后可以添加其他成员,sizeof
将无法工作。为什么我们不能定义类的变量或函数外部的类变量,如果我们可以定义函数外部的任何非类变量使其成为全局变量,那么“定义”作用域之外的类变量不再是定义。它在内存块上执行操作。为什么我们不能在函数外定义类变量或非类变量,如果我们可以在函数外定义任何非类变量使其成为全局变量?为什么我们不能在函数外定义类变量或类变量,如果我们可以在函数外定义任何非类变量,使其成为全局变量,为什么我们不能在函数外定义类变量或类变量,如果我们可以在函数之外定义任何非类变量,使其成为全局变量,这是因为传统OO设计的核心原则之一是封装。类定义是自包含的。
class abc
{
public:
int x = 10;
};