C++中,可以在不建立对象的情况下调用类成员吗?
静态成员似乎可以,那非静态成员呢?如类A定义然后intmain(){A::n++//n是类中的静态成员A::t++//t是类中普通成员能,能这样写吗}...
静态成员似乎可以,那非静态成员呢?
如类A 定义
然后 int main ()
{
A:: n++// n是类中的静态成员
A::t++ // t是类中普通成员能,能这样写吗
} 展开
如类A 定义
然后 int main ()
{
A:: n++// n是类中的静态成员
A::t++ // t是类中普通成员能,能这样写吗
} 展开
3个回答
展开全部
静态的成员变量和函数存在全局段,整个程序只有一份,所以可以直接用类名来引用。
非静态的是没有空间的,只有实例化一个对象的时候才会有空间,所以不能用类名来引用,只能用对象来引用。
举个例子:
class A {
public:
int x;
static int y;
};
A a, b;
a.x = 10;
b.x = 20;
如果你用类来引用x, A::x那编译器怎么知道你要用哪个x啊,对象a也有,b也有,还可能更多。一个对象一份。当然要用对象来引用啦,a.x, b.x这样才对,明白了吗?
静态的不同,不管你有多少个对象, y只有一份,存在静态区,a.y, b.y都是同一个变量。
非静态的是没有空间的,只有实例化一个对象的时候才会有空间,所以不能用类名来引用,只能用对象来引用。
举个例子:
class A {
public:
int x;
static int y;
};
A a, b;
a.x = 10;
b.x = 20;
如果你用类来引用x, A::x那编译器怎么知道你要用哪个x啊,对象a也有,b也有,还可能更多。一个对象一份。当然要用对象来引用啦,a.x, b.x这样才对,明白了吗?
静态的不同,不管你有多少个对象, y只有一份,存在静态区,a.y, b.y都是同一个变量。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询