C++面向对象入门(十三)静态成员函数
静态成员函数
特点:
所有类对象共享一个成员函数
可以通过类名调用(使用public修饰), 也可以通过对象调用
只能访问静态成员变量, 即使未定义任何类对象, 静态成员函数仍然调用(类名调用), 假设能访问非静态成员变量, 编译器无法找到该变量所占的内存, 故假设不成立, 无法访问非静态成员变量
#include <iostream> #include <string> using namespace std; /** * 静态成员函数 * 特点: * 所有类对象共享一个成员函数 * 可以通过类名调用(使用public修饰), 也可以通过对象调用 * 只能访问静态成员变量, 即使未定义任何类对象, 静态成员函数仍然调用(类名调用), 假设能访问非静态成员变量, 编译器无法找到该变量所占的内存, 故假设不成立, 无法访问非静态成员变量 */ class Rider { private: string name; string status; string driver; static void printManufacturer2() { cout << "The manufacturer is " << manufacturer << endl; } public: static string manufacturer; Rider() {} Rider(const string &name, const string &status, const string &driver); ~Rider() { } static void printManufacturer() { cout << "The manufacturer is " << manufacturer << endl; // cout << "The manufacturer is " << name << endl; //error: Invalid use of member "name" in static member function } 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::printManufacturer(); // Rider::printManufacturer2(); //error: 'printManufacturer2' is a private member of Rider } int main() { test1(); system("pause"); return 0; }
路漫漫其修远兮,吾将上下而求索。

浙公网安备 33010602011771号