首页 > 其他分享 >static修饰静态成员变量and静态成员函数

static修饰静态成员变量and静态成员函数

时间:2024-03-07 13:45:57浏览次数:24  
标签:变量 静态 成员 Person static 函数

在成员变量和成员函数之前加上static关键词,称为静态成员

静态成员分为:

(1)静态成员变量

  • 所有对象都共享同一份数据
  • 编译阶段就分配内存
  • 类内生命,类外进行初始化操作

(2)静态成员函数

  • 程序共享一个函数
  • 静态成员函数只能访问静态成员变量

实例代码1(静态成员变量):

#include <iostream>

using namespace std;

class Person {
public:
    //静态成员变量特点:
    //1.所有对象都共享同一份数据
    //2.编译阶段就分配内存
    //3.类内声明,类外进行初始化操作
    static int m_A;

    //静态成员变量也是可以有访问权限的
private:
    static int m_B;

public:
    int getValue() {
        return Person::m_B;
    }
};

int Person::m_A = 100;
//即使m_B是私有的静态成员变量,依然可以在类外进行初始化
int Person::m_B = 200;

void test01() {
    //1.通过对象访问
    Person p1;
    cout << p1.m_A << endl;

    Person p2;
    p2.m_A = 50;
    cout << p2.m_A << endl;

    //2.通过类名访问,但只能是访问静态成员变量or静态成员函数
    cout << Person::m_A << endl;
}

void test02() {
    Person p;
    //错误,m_B是私有成员变量,无法访问
    //cout<<p.m_B<<endl;
}

int main() {
    test01();
    test02();
    Person p;
    cout << p.getValue() << endl;
}

 

实例代码2(静态成员函数):

#include <iostream>

using namespace std;

class Person {
public:
    //静态成员函数特点:
    //1.程序共享一个函数
    //2.静态成员函数只能访问静态成员变量
    static void func1() {
        cout << "func1调用" << endl;
        m_A = 100;
        //m_B=100; //错误,不可以访问静态成员变量
    }

    static int m_A;
    int m_B;

    //静态成员函数也是可以有访问权限的
private:
    static void func2() {
        cout << "func2调用" << endl;
    }
};

int Person::m_A = 0;

void test() {
    //静态变量两种访问方式:
    //1.通过对象访问
    Person p1;
    p1.func1();

    //2.通过类名访问
    Person::func1();
    //Person::func2(); //私有权限无法访问
}

int main() {
    test();
}

 

标签:变量,静态,成员,Person,static,函数
From: https://www.cnblogs.com/eisenshu/p/18058731

相关文章

  • 类内的静态成员函数
    A-LOAM代码中,用ceres构建优化问题时,有如下代码structLidarEdgeFactor{ LidarEdgeFactor(Eigen::Vector3dcurr_point_,Eigen::Vector3dlast_point_a_, Eigen::Vector3dlast_point_b_,doubles_) :curr_point(curr_point_),last_point_a(last_point_a_),last_poi......
  • CentOS 7 配置静态IP (VMware 虚拟机)
    1.打开虚拟网络编辑器1.1编辑==>虚拟网络编辑器(Ps:需要先将系统关机)2.更改配置2.1使用管理员权限更改设置2.2接着将动态分配ip设置(DHCP)关掉,查看NAT设置,记住子网ip,子网掩码,网关3.开机进入centos系统,配置静态ip3.1编辑网络接口的配置文件#vi编辑vi/etc/......
  • c++在类外是不能直接调用私有成员函数的
    c++在类外是不能直接调用私有成员函数的,比如#include<iostream>usingnamespacestd;classA3{voidshow3(){cout<<"classA3"<<endl;//注意,类内部默认是私有}};intmain(){A3obj3;obj3.show3();//这里出错return0;}......
  • 3_静态类与非静态类的区别
    静态类与非静态类的区别?静态类无法实例化(换句话说,无法使用new运算符创建类类型的变量。由于不存在任何实例变量,因此可以使用类名本身访问静态类的成员)。静态构造函数只调用一次,在程序所驻留的应用程序域的生存期内,静态类会保留在内存中(即使用Static修饰的类,应用一旦启用静态类......
  • C++ 类的静态成员
    原文可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态......
  • C++填坑系列——EffectiveModernC++之特殊成员函数
    Chapter移步现代c++之特殊成员函数Item17:Understandspecialmemberfunctiongeneration总结:有必要了解各个函数什么时候自动生成;自动生成的函数有可能产生预期外的行为;特殊成员函数(编译器自动生成):默认构造函数,析构函数,拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋......
  • C++static 存储类
    1#include<iostream>23//函数声明4voidfunc(void);56intmain()7{8intcount=10;9while(count--)10{11func();12std::cout<<",变量count为"<<count<<std::endl;13......
  • ubuntu配置静态ip
    1、确定网络接口名称ipaddens33就是网卡名称 2、备份网卡配置文件sudocp/etc/netplan/00-installer-config.yaml/etc/netplan/00-installer-config.yaml.bak 3、编辑网卡配置文件sudovim/etc/netplan/00-installer-config.yaml#这是默认的网卡DHCP配置#T......
  • 编辑器蓝图脚本_批量静态网格体资产减面
    介绍这个功能用于静态模型资产的减面工作注意1为100%使用1选中想要减面的模型资产(注意是在资产管理器中)2这里选择减50%的三角面3减面完成蓝图https://blueprintue.com/blueprint/15ew70m6/参考链接https://www.bilibili.com/video/BV14C4y1c7ww/?spm_id_from=333.78......
  • 编辑器脚本工具——批量修改场景中的静态网格体
    介绍这个功能可以让用户在场景中批量替换静态模型使用方式在场景中选择完想要更改的静态模型在弹出的窗口选择要替换的模型替换完成蓝图https://blueprintue.com/blueprint/p1p8imoa/......