C++静态成员

对象的生存期

1.局部对象

2.全局对象

3.动态创建的对象

1.对于局部定义的对象,每当程序控制流到达该对象定义处时,调用构造函数。当程序控制走出该局部域时,则调用析构函数。

2.对于静态局部定义的对象,在程序控制首次到达该对象定义处时,调用构造函数。当整个程序结束时调用析构函数。

2.对全局定义的对象,当程序进入入口函数main之前对象就已经定义,这时要调用构造函数。整个程序结束时调用析构函数。

3.动态创建的对象,使用new创建对象, delete释放对象.

静态成员

由关键字static修饰说明的类成员,成为静态类成员(static class member)。虽然使用static修饰说明,但与函数中的静态变量有明显差异。类的静

态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公用内存中。

该类产生的所有对象共享系统为静态成员分配的一个存储空间,而这个存储空间是在编译时分配的,在定义对象时不再为静态成员分配空间

(静态成员数据不在对象空间中,访问它时没有this指针)。

静态成员初始化在类外进行初始化,不管共有或私有

静态数据成员属于整个类,使用时可用以下格式:

类名::静态数据成员名 或 对象.静态数据成员名==(前提 是可访问符为public)==

静态成员函数

class Object {
private:
	int value;
	static int num ;
public:
	Object(int x = 0) :value(x) { num += 1;}
	Object (const Object& obj) :value(obj. value) { num += 1;}
	~Object() { num -= 1;}
void Print() const 
{
	num+=10;  //OK
	cout <<" value" << this->value <<" num:<< num << endl ;
}
static int Show() const//error 没有this指针,无法修饰this指针,
{
    num+=10;
    cout << "value"<< this->value <<" num: "<< num << endl;//error
}
};
int Object: :num = 0; // INIT

int main()
{
	Object obja(10) ;
	obja.Show();
	Object::Show();
}

没有this指针,要想访问对象成员,需要把对象当作参数传递进去

函数成员说明为静态,将与该类的不同对象无关。静态函数成员的调用,在对象之外可以采用下面的方式:

类名::函数名或对象名.函数名;

与静态数据成员相反,为使用方便,静态函数成员多为公有。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小新 蜡笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值