C++面向对象入门(十二)静态成员变量

静态成员变量
特点:
所有类对象共享一个静态成员变量
类内声明, 类完定义(初始化)(必须)
编译阶段分配内存, 全局区?
如果访问权限设置为公共(public), 可在类外 直接通过类名::静态成员变量名访问, 也可使用对象访问, 语法为: 对象名.静态成员变量名
#include <iostream>
#include <string>

using namespace std;

/**
 * 静态成员变量
 * 特点:
 * 所有类对象共享一个静态成员变量
 * 类内声明, 类完定义(初始化)(必须)
 * 编译阶段分配内存, 全局区?
 * 如果访问权限设置为公共(public), 可在类外 直接通过类名::静态成员变量名访问, 也可使用对象访问, 语法为: 对象名.静态成员变量名
 */
class Rider {
private:

    string name;
    string status;
    string driver;
public:
    static string manufacturer;
    Rider() {}

    Rider(const string &name, const string &status, const string &driver);

    ~Rider() {

    }

    void showInfo() {
        cout << "{name:"<< name << ", status:" << status << ", driver:"<< driver << ", manufacturer:"<< manufacturer << "}" << endl;
    }

};

//类外初始化静态成员变量(个人觉得类外定义更贴切)
//语法
//数据类型 类名::静态成员变量名 = 值;
string Rider::manufacturer = "Toei Tokyo";

Rider::Rider(const string &name, const string &status, const string &driver) : name(name), status(status),
                                                                               driver(driver) {}

void test1() {
    Rider r("Zero-One", "Biting Shark", "Hiden Aruto");
    r.showInfo();
    //如果访问权限设置为公共(public), 可在类外 直接通过类名::静态成员变量名访问,
    cout << "Rider Zero-One's manufacturer is " << Rider::manufacturer << endl;
    //也可使用对象访问, 语法为: 对象名.静态成员变量名
    cout << "Rider Zero-One's manufacturer is " << r.manufacturer << endl;
}
int main() {
    test1();
    system("pause");

    return 0;
}

 



posted @ 2020-08-19 13:59  DNoSay  阅读(261)  评论(0)    收藏  举报