C++类

类内对象

静态:


#include <iostream>
#include <string>
using namespace std;

class Student {
public:
    Student(const string& name1, int age1) {

      }
public:
   static int m_total;  //静态成员变量
   /*
     static 成员变量属于类,不属于某个具体的对象,即使创建多个对象,也只为 m_total 分配一份内存,所有对象使用的都是这份内存中的数据。当某个对象修改了 m_total,也会影响到其他对象
   static 成员变量必须在类声明的外部初始化:
   格式:变量类型 类名::变量名 = 初始化值;
   static 成员变量和普通的 static 变量类似,都在内存分区中的全局数据区分配内存
   */
 private:
    string m_name;
    int m_age;
 };
int Student::m_total = 0;  //初始化静态成员变量
//静态成员变量在初始化时不能再加 static,但必须要有数据类型。被 private、protected、public 修饰的静态成员变量都可以用这种方式初始化
//注意:static 成员变量的内存既不是在声明类时分配,也不是在创建对象时分配,而是在(类外)初始化时分配。反过来说,没有在类外初始化的 static 成员变量不能使用


int main()
{
    //static 成员变量既可以通过对象来访问,也可以通过类来访问
    Student::m_total = 10;  //通过类访问

    Student stu("张三", 25);
    stu.m_total = 20;  //通过对象来访问

    Student* pstu = new Student("李华", 16);
    pstu->m_total = 30;  //通过对象指针来访问

    cout << Student::m_total << endl;

    return(0);
}

参考:https://www.cnblogs.com/liming19680104/p/13522108.html


此时是4

posted @ 2021-02-03 20:45  Chenyi_li  阅读(56)  评论(0)    收藏  举报