首页 > 编程语言 >C++从入门到精通——静态成员以及静态成员函数

C++从入门到精通——静态成员以及静态成员函数

时间:2022-11-01 18:33:35浏览次数:40  
标签:cout 静态 成员 C++ Person int 变量


静态成员变量以及访问方式

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;


class Person
{
public:
//1、静态成员变量
//静态成员变量 :编译阶段就分配了内存
//类内声明 、类外初始化
//静态成员变量 所有对象都共享同一份数据
static int m_A;
//2、静态成员函数
//所有对象都共享同一个func函数
static void func()
{
//m_C = 100; //静态成员函数 不能访问非静态成员变量
m_A = 100; //静态成员函数 能访问静态成员变量
cout << "func调用" << endl;
}
int m_C;
private:
static int m_B; //私有静态成员变量
static void func2()
{

}
};
int Person::m_A = 0;
int Person::m_B = 0;
void test01()
{
//1、通过对象进行访问
Person p1;
cout << p1.m_A << endl;

Person p2;
p2.m_A = 100;

cout << p1.m_A << endl;

//2、通过类名进行访问
cout << Person::m_A << endl;
//静态成员变量 也是有访问权限的,私有权限类外访问不到
//cout << Person::m_B << endl;

}
int main(){

test01();
// system("pause");
return EXIT_SUCCESS;
}

静态成员函数也具有访问权限

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;


class Person
{
public:
//1、静态成员变量
//静态成员变量 :编译阶段就分配了内存
//类内声明 、类外初始化
//静态成员变量 所有对象都共享同一份数据
static int m_A;
//2、静态成员函数
//所有对象都共享同一个func函数
static void func()
{
//m_C = 100; //静态成员函数 不能访问非静态成员变量
m_A = 100; //静态成员函数 能访问静态成员变量
cout << "func调用" << endl;
}
int m_C;
private:
static int m_B; //私有静态成员变量
static void func2()
{

}
};
int Person::m_A = 0;
int Person::m_B = 0;
void test01()
{
//1、通过对象进行访问
Person p1;
cout << p1.m_A << endl;

Person p2;
p2.m_A = 100;

cout << p1.m_A << endl;

//2、通过类名进行访问
cout << Person::m_A << endl;
//静态成员变量 也是有访问权限的,私有权限类外访问不到
//cout << Person::m_B << endl;

}

void test02()
{
//通过对象
Person p1;
p1.func();
//通过类名
Person::func();
//Person::func2(); 静态成员函数也是有访问权限的
}

int main(){

test01();
test02();
// system("pause");
return EXIT_SUCCESS;
}


标签:cout,静态,成员,C++,Person,int,变量
From: https://blog.51cto.com/u_13859040/5814693

相关文章

  • c++从入门到精通——数组类封装以及操作符重载
    #include"myArray.h"MyArray::MyArray(){//cout<<"默认构造函数调用"<<endl;this->m_Capacity=100;this->m_Size=0;this->pAddress=newint[this->m_Cap......
  • c++从入门到精通——面向对象初探以及友元函数、对象
    面向对象每个对象内存地址独一无二,空对象分配一个字节空间#define_CRT_SECURE_NO_WARNINGS#include<iostream>usingnamespacestd;classPerson{public://intm_A;voi......
  • C++案例1
        输出,发现不会调用子类析构。然而子类在堆里申请了空间的,内存泄漏。 ......
  • C++基础入门通讯录管理系统
    记录代码#pragmaonce#include<iostream>#include<string>#defineSize100#defineOK1#defineError-1usingnamespacestd;//结构体,通讯录人structPerson{//名字......
  • C++从入门到精通——C++面对对象
    面向对象基础#define_CRT_SECURE_NO_WARNINGS#include<iostream>usingnamespacestd;#include<string>//设计一个类,求圆的周长constdoublePI=3.14;//class+类名//......
  • c++从入门到精通——基本入门
    C++-1.helloWorld#include<iostream>usingnamespacestd;intmain(){cout<<"helloworld!"<<endl;system("pause");returnEXIT_SUCCESS;}双冒号作用域#inclu......
  • Windows 下 MSYS2 环境配置和 MinGW-w64 C++ 环境配置
    转载来自:Server=https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64Windows下MSYS2环境配置和MinGW-w64C++环境配置1、简介本文主要是Windows下MSYS2......
  • 郁金香 中级班 2.c++的基类和派生类
        生物是基类老虎是派生类派生类继承了基类的成员和成员函数同时this指针指向的是这个对象所开辟的那个地址......
  • c++ 模板 指针类型偏特化
    一步步来,先简单点.目标:我们要实现一个模板类,例化后,可以通过get_val获取到值,通过get_ptr获取到指针.具体什么意思结合例子来看看吧.例子:structA{intdata;......
  • 黑马程序员C++
    C++基础入门1C++初识1.1第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1创建项目​ VisualStudio是我们用来编写C++......