码迷,mamicode.com
首页 > 其他好文 > 详细

学习:类和对象——静态成员变量和函数

时间:2019-11-15 00:16:11      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:name   全局   私有   sys   class   生成   ret   vat   code   

静态成员:

静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员

静态成员分为: 静态成员变量和静态成员函数,其中这两个特点如下

静态成员变量:

特点1、所有对象共享同一份数据
特点2、在编译阶段分配内存
特点3、类内声明,类外初始化

静态成员函数:

特点1、所有对象共享同一个函数
特点2、静态成员函数只能访问静态成员变量


静态成员变量:
示例代码:

#include<iostream>
#include<string>

using namespace std;

class Person {

public:
    Person() {
        cout << this->b << endl;
    }
    
public:
    static int a; //定义一个共享静态成员变量
private:
    static int b; //定义一个私有静态成员变量
};

int Person::a = 1;
int Person::b = 2;


void test01() {
    Person p1;
    cout << p1.a << endl; // 生成p1的对象 直接访问不可以,因为没有在外部对静态成员进行初始化
    //cout << p1.b << endl; //无法进行访问,因为静态变量b是私有的

    //由于静态成员变量是存在于全局区的,所以我们可以直接通过类名进行访问
    cout << Person::a << endl;
    //cout << Person::b << endl;

}

int main() {
    test01();
    
    system("pause");
    return 0;
}

静态成员函数:

静态成员函数特点:
特点1、程序共享一个函数
特点2、静态成员函数只能访问静态成员变量

示例代码

#include<iostream>
#include<string>

using namespace std;


class Person {
public:
    Person(int a) {
        this->a = 10;
    }

    static void to_visit() { // 静态函数可以访问静态变量,但是无法访问类中的变量,原因也很好理解,无法区别到底是哪个对象的a成员变量
        cout << "这是公共静态成员函数" << endl;
        cout << a << endl;
    }

public:
    static int a;
private:
    static void to_visit_s() { //同样的也有私有静态成员函数
        cout << "这是私有静态成员函数" << endl;
    }
};

int Person::a = 1;

int main() {

    Person p1(10);
    cout << p1.a << endl;
    Person::to_visit();//同样也可以通过类名进行访问静态成员函数
    p1.to_visit(); //通过对象访问静态成员函数
    //Person::to_visit_s();
    system("pause");
    return 0;
}

学习:类和对象——静态成员变量和函数

标签:name   全局   私有   sys   class   生成   ret   vat   code   

原文地址:https://www.cnblogs.com/zpchcbd/p/11863233.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!