《Essential C++》系列笔记之第四章(基于对象的编程风格)之第五节(静态类成员)

《Essential C++》系列笔记之第四章(基于对象的编程风格)之第五节(静态类成员)_第1张图片
代码实践

  • main.cpp

    #include 
    using namespace std;
    #include "Person.h"
    
    int main()
    {
    	Person::display_add(); //静态成员函数可以当成普通函数调用,只是需要class scope运算符
    	Person::display();
    	Person A(18, "hehe");
    	A.display_name();
    
    	A.display_add();
    
    	system("pause");
    	return 0;
    }
    
  • Person.h

    #pragma once
    #include 
    using namespace std;
    #include 
    
    class Person
    {
    public:
    	Person(int age, string name)
    		:_age(age), _name(name)
    	{};
    
    	//static void display_name(); //错误,因为该函数访问了 non-static member
    	void display_name();
    	static void display_add(); //正确,因为该函数没有访问 non-static member
    	static void display(); //正确,因为该函数没有访问 non-static member
    
    private:
    	int _age;
    	string _name;
    	//static string _address = "china"; //错误 这种static必须在程序代码文件中提供定义
    	static string _address;
    	static const int sex = 5; //const static int data member可以在声明时指定初值()
    };
    
  • Person.cpp

    #include "Person.h"
    
    string Person::_address = "china"; //这里也不需要加上static关键字 但是需要class scope运算符
    
    void Person::display_name()
    {
    	cout << _name << endl;
    }
    
    void Person::display_add() //这里也不需要加上static关键字
    {
    	cout << _address << endl;
    }
    
    void Person::display()
    {
    	cout << "hello world" << endl;
    }
    

今天是20200319 今儿中午的红烧肥肠味道好极了

你可能感兴趣的:(《Essential,C++》系列笔记)