C++静态成员傻傻分不清?

C++里的静态成员

首先理解C++中静态成员有何作用?它的特点?

1)静态数据成员:

定义格式:static 数据类型 数据成员名 这个与普通数据成员相似,记得加static 就好了。因为它属于类,而不是属于某个对象。所以可以用类名直接访问静态的数据成员!!!
访问格式: 类名::静态数据成员名
但私有静态数据成员不能在类外直接访问,如下图。主要看报错
私有静态数据成员不能在类外直接访问
定义:
定义

另外每个静态数据成员在类里面只有一个拷贝,所以在任何时候访问任何一个类的对象,都会得到最新的静态数据成员的值。在任意一个对象中修改静态数据成员的值,都会影响到该类的所有对象。也就是这样实现了一个类的多个数据共享,并同步更新 。其在类中定义 ,在类外初始化。初始化格式: 数据类型 类名::变量名=值

2)静态成员函数:

  1. 在类的定义中,前面有static说明的成员函数称为静态成员函数,静态成员函数属于整个类,是该类中的共享的成员函数,不属于某个对象。

  2. 静态函数成员主要用来访问静态数据成员,与静态数据成员一起使用时,达到了对同一个类中对象之间共享数据的目的。

  3. 私有的静态成员函数不能做类外部的函数和对象访问

  4. 静态成员函数可以在建立对象之前调用。

  5. 静态成员函数被限定为内部连接,与其他同名函数不会冲突。

  6. 静态成员函数没有this指针。静态成员函数可以访问本类中的静态数据成员。

一个小栗子

下面举一个完整的栗子,希望能够更好地理解关于静态成员的访问、初始化得问题。
并且看看静态数据成员是否受private控制符的作用

#include <iostream>
using namespace std;

class Member
{
public:
	Member() {};
	void print();	
	static int pub;
private:
	static int priv;
};

int Member::pub = 1;
int Member::priv = 2;

void Member::print()
{
	cout << "print()  pub = " << pub << endl;
	cout << "print()  priv = " << priv<< endl;
}

int main()
{
	Member m;
	m.print();//pub,priv均没有在类的外部访问

	Member::pub = 11;
	cout << "main()   pub=" << m.pub << endl;

	return 0;
}

输出结果

所以,private还是有作用的。
结合第一张图,正是在受到了private的控制下,变量“priv”不能在类外被访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值