• 静态成员数据和静态成员函数


    /*
    含有静态数据成员的类在创建对象时不为静态数据成员分配存储空间,可以将静态数据成员看成一个全局变量,将其封装在某个类中有两个目的
    (1)限制该变量的作用范围,例如,将其放在类的私有部分声明,则它只能有该类对象的函数成员直接访问
    (2)将意义相关的全局变量和相关的操作物理地放在一起,可以增加程序的可读性和可维护性

    静态成员函数
    1)静态成员函数是同类的所有对象共享的资源,只有一个公用的副本,因此它不能直接访问非晶态的数据成员,必须要通过某个该类的对象才能访问,
    一般的成员函数可以直接访问非静态的数据成员
    2)在静态成员函数中访问的基本上是静态数据成员或者全局变量
    3)类名::静态成员函数名
    4)一个趔IDE静态成员函数于非静态成员函数不同,它不需要创建任何该类的对象就可以被调用,静态成员函数的使用虽然不针对某一个特定的对象,但在使用时系统
    中最好已经存在该类的对象,否则无意义
    5)静态成员函数不能使虚函数,若非静态成员函数和经台成员函数具有相同的名字很参数类型将是非法的
    */
    #include<iostream>
    using namespace std;
    class Student {
      public:
       void Set(string str) {
       name=str;
       number++;
       }
       static int PrintNumber() {//静态成员函数
           cout<<number<<"total numbers"<<endl;
       }
       void Print() {
        cout<<name<<"->students are"<<number<<"numbers"<<endl;
       }
       private:
        static int number;//静态数据
        string name;
    };
    int Student::number=0;//静态数据初始化
    int main() {
       Student s,s1;
       Student::PrintNumber();//调用静态成员函数
       s.Set("Smith");
       s.Print();
       Student::PrintNumber();
       s1.Set("jenny");
       s1.Print();
       s1.PrintNumber();
       return 0;
    }

    结果:

    0total numbers
    Smith->students are1numbers
    1total numbers
    jenny->students are2numbers
    2total numbers

    --------------------------------
    Process exited after 0.2102 seconds with return va
    请按任意键继续. . .

  • 相关阅读:
    一些暂时被我鸽掉的题目
    概率期望生成函数 学习笔记?
    「SDOI2017」树点涂色 解题报告
    「十二省联考 2019」字符串问题 解题报告
    2019好多省联考 游记
    懒癌 解题报告
    MySQL 性能优化
    数据库优化
    平台团购活动商品同步功能
    ECSSHOP表结构
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/5093413.html
Copyright © 2020-2023  润新知