C++ static成员变量与static成员函数

最近在做一个服务端的小项目这个项目要用到asio::streambuf这个对象。但是这个类的复制构造函数是私有的也就是导致了它不可以被复制构造。在传参数的时候就比较不方便,不够由于它是缓冲区,如果设置多个出现也是不方便。

现在就想做一个static的streambuf,但是希望它是私有的,这样比较方便管理和控制。

static成员变量

如果一个类里面含有的是公有类型的static变量,那么就意味着这个变量在类的作用于里面类似于一个全局的变量。

有一段话说的特别好就是,一个static变量与包含它的类对象有关,但是与类的对象无关。

就好像是这个变量是每个类的实例化都拥有的,但是它不属于任何一个类。在使用的时候加上它的作用域 :: ,而且需要在类外进行初始化。

至于为什么一定要在引用static变量的时候加上一个域作用符标清楚,变量所属的范围。我想还是因为static的对外不可见性吧,比如在一个c文件里面声明一个static变量就意味着出了该文件编译器就不会找到这个变量。

而且由于static变量是抽象出来的,独立于对象的实例的。所以一般都会在实例化一个对象之前,初始化static变量。

static成员函数

有了static变量,我们来聊一下static函数

类里面同样也有static函数,这个函数是可以直接访问类的static变量和非static变量成员的,而且可以免去域作用符的限制,但是由于这个函数也是不属于一个类的对象的,那么也就是说,类的普通成员变量是不可以写进来的。

有了static成员变量有什么好处吗?

可以节省空间,而且可以保持变量的值不变。可以表达类的一些特性,还有很多有意思的功能等着被使用。

猜你喜欢

转载自blog.csdn.net/weixin_42427338/article/details/83310207