可以在不建立对象的情况下调用类成员吗?可以不建立对象的情况下调用类方法吗?

可以在不建立对象的情况下调用类成员吗?

静态成员不能,非静态成员是随着对象存在而产生的,没有对象也就不会存在非静态成员,静态的可以,类名::成员名方式访问。

静态的成员变量和函数存在全局段,整个程序只有一份,所以可以直接用类名来引用(C++ primer PLUS P589)。
非静态的是没有空间的,只有实例化一个对象的时候才会有空间,所以不能用类名来引用,只能用对象来引用。
举个例子:

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都是同一个变量。

可以不建立对象的情况下调用类方法吗?

https://www.cnblogs.com/catch/p/3500678.html在这里看到一个直接使用类初始化调用类方法的。

静态方法可以通过类来调用,其余得创建对象来调用。那单例模式与一个类全是静态方法在设计角度的差别是什么呢?因为单例模式可以充分的使用面向对象的封装,继承,多态;而一个类所有静态方法不行,在设计角度远不如单态设计灵活。

猜你喜欢

转载自blog.csdn.net/weixin_40539125/article/details/84112472