C++总结三----静态成员,const修饰类成员,内联函数

非常感谢您能参观我的博客,有什么想法请留言,必回。

一 · 静态成员

我们知道全局变量能够实现数据共享,如果在多个程序文件中有多个函数,每一个函数中都可以来改变全局变量的值,但是这样做是不安全的,如不小心改错就会导致程序崩溃,因此在实际运用中很少用到全局变量。
但是有时候我们就是要用到多个对象之间实现数据共享,除了全局变量,就是我们今天要提到的静态成员

1.1 静态数据成员

class Person
{
   
private:
    char* _name;
    static char* _gender;    //把_gender定义为静态数据成员
    int   _age;
}

静态数据成员是一个特殊的数据成员,以static开头。如果希望个对象的数据成员的值是一样的,就可以把它定义为静态数据成员。声明为静态数据成员有个好处就是它只占用一分内存空间,而不是每个对象都为它留下一块空间。

对于静态成员函数作以下几点说明:
⑴前面说过,如果只申明类而未定义对象,则类的一般数据成员是不占空间的,只有在定义对象时,才会为对象的数据成员分配空间。但是静态数据成员不属于某一个对象,在为对象所分配的空间中不包括静态数据成员所占的空间,它是在对象之外单独开辟空间,只要定义了静态成员变量,即使不定义对象,也会为其分配空间还能被引用。
⑵静态数据成员既然不会随着对象的建立而分配空间,那么自然也不会随着对象的撤销而释放。静态数据成员是在程序开始运行时被分配空间,到程序结束时才会释放空间。
⑶静态数据成员只能在类外进行初始化。

char* Person::_gender ="man" 

要注意的是不能用参数初始化表来对静态数据成员初始化:
这里写图片描述
⑷静态数据成员既可以通过对象名引用还可以通过类名引用:

class Person
{
public:
    Person(char* name, char* gender, int age)
        :_name(name)
        , _age(age)
       {}
    static char* _gender;
private:
    char* _name;    
    int  _age;
};

char* Person::_gender = "man";

int main()
{
    Person p("Peter", "man", 18);
    cout << Person::_gender << endl;
    cout << p._gender << endl;
    return 0;
}

这里写图片描述

如果静态数据成

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值