C++:类定义下的对象成员,静态成员,以及静态成员函数的实现

2023-05-16

我之前在一篇文章中,讲解了对象是什么,对于一些刚看我文章的朋友,我在这里再次简单的描述一下,如果想要更加深入的了解,就请就看我之前发表的文章。

我们知道,c++,是一门面向对象的编程。那么何为对象,以及我们这里所说的对象成员又是啥?

对象,通俗地来说,就是相当于c语言里面地变量。我们通常会将对象与类放在一起讲,类,就相当于c语言里面地数据类型。ok,我们引入对象成员。

对象成员:在定义一个新的类型时,可以用已有地类 类型实例化对象作为新类地数据成员使用。

这句话可能有点不好理解,我们来看代码:

#include<iostream>
using namespace std;
class A
{
public:
	A()
	{
		cout << "创建A" << endl;
	}
	~A()
	{
		cout << "析构A" << endl;
	}
};
	class B
	{
	public:
		B()
		{
			cout << "创建B" << endl;
		}
		~B()
		{
			cout << "析构B" << endl;
		}
	private:
		A a;
	};
	int main()
	{
		B obj;
		return 0;
	}

上面代码为我们展示了对象成员地构造,它与其他类函数一样,也需要构造函数,结束调用是需要析构函数。(我也在之前文章讲过何为析构函数。)我们现在再看对像成员的定义,是不是很清楚,也就是说,我们将一个类进行实例化,并且在另一个中作为数据成员,此时的实例化类就具有了两个身份。

我们接下来来讲静态成员与静态函数:

请大家看一个代码:

#include<iostream>
#include<string>
using namespace std;
class croster
{
public:
	static int count;
private:
	string name;
	int Math;
	int English;
	int Sum;
public:
	croster(string na = "undef", int m = 100, int e = 100);
	void display();
	int cumulation();
	void display()const;
};
int croster::count = 100;
croster::croster(string na, int m, int e):name(na),Math(m),English(e)
{
	cout << "Welcome new class." << endl;
	Sum = Math + English;
	count--;
}
void croster::display()const
{
	cout << name << endl;
	cout << "Math:" << Math << endl;
	cout << "English:" << English << endl;
	cout << "Sum:" << Sum << endl;
}
int croster::cumulation()
{
	Sum = Math + English;
	return Sum;
}
int main()
{
	cout << "Number of all student=" << croster::count << endl;
	croster list[3];
	cout << "Number of all student=" << list[1].count<< endl;
	croster stu_A;
	cout << "Number of all student=" << stu_A.count<< endl;
	cout << "Number of all student=" << croster::count << endl;
	return 0;
}

壹、 静态数据成员

(1)静态数据成员格式如下:

static 类型 静态数据成员名;

例:static int count;

(2)这里要注意一下,静态数据成员一定要初始化,且必须在类外实现。

格式如下:

类型 类名 ::静态数据成员名=初始值;

例如:int croster::count(100);

(3)在C++中对于赋值有几种形式,大家需要了解一下哦!

贰、静态成员函数

大家看一下上面代码的公有属性中,对静态成员数据的定义。如果这里的公有属性变成私有属性,那么以下对于count(静态数据成员)的访问,都将是被拒之门外,那么如何解决这一问题,方法是就是我们下面所讲的静态成员函数。

我们这里所讲的静态成员函数,里面没有this指针,所以只能访问静态成员。我们以上面的代码为例,我们引用代码中的display()。修改如下;

static   void   diaplay ()

{

cout<<count<<endl;

}

本章讲解到此为止。(如果里面讲的内容有什么错误,欢迎大家来指正!)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++:类定义下的对象成员,静态成员,以及静态成员函数的实现 的相关文章

  • 嵌入式C语言(入门必看)

    目录 STM32的数据类型 const关键字 static 关键字 volatile关键字 extern关键字 struct结构体 enum typedef define 回调函数 ifdef ifndef else if 嵌入式开发中既有
  • ESP32上手指南

    乐鑫的ESP32微控制器是一款集成有2 4 GHz Wi Fi和蓝牙4 0双模的物联网芯片方案 xff0c 采用台积电 TSMC 超低功耗的40纳米工艺代工 片上集成有天线开关 射频巴伦 功率放大器 接收低噪声放大器 滤波器 电源管理模块等
  • 基于STM32硬币识别检测

    本设计基于ARM内核的单片机STM32F4的高识别率硬币识别装置 xff0c 主要应用于各公共营业场所 xff0c 如各超市 xff0c 自动售货机 xff0c 公共交通等 它应该能完成一角 xff08 分新版旧版 xff09 xff0c
  • PHP多维数组排序

    User 61 M 39 User 39 Incomelog 61 M 39 incomelog 39 user 61 User gt select now date 61 39 2015 02 09 39 integral 61 arra
  • PH电极酸碱度检测

    最近做了一个项目是关于PH电极测酸碱度的一个仪器 简单地说 xff1a 玻璃电极是一种氢离子选择性电极 xff0c 相当于一个对玻璃膜两侧氢离子浓度差异能产生附加电势差的 盐桥 xff0c 一般的盐桥是为了消除浓差电势或者液体接触电势这种附
  • 关于调试RTC时钟出现的问题

    此次做一个项目出现了一个令我很不解的问题 xff0c 就是RTC时钟 xff0c 代码是提前写好的 xff0c 当时是用的STM32F103ZET6最小系统板 xff0c 所有功能都是没有问题的 但是最终我画好的PCB芯片用的是STM32F
  • vscode编写c/c++及自动配置c/c++环境

    目录 前言所需的工具链接一 vscode中文设置及c c 43 43 插件安装1 中文设置2 c c 43 43 插件安装 二 环境配置1 解压AutoVsCEnv WPF V1 993自动配置工具压缩包2 运行AutoVsCEnv WPF
  • 安装最新版keil5编译报错*** target ‘target 1‘ uses arm-compiler ‘default compiler version 5‘ which i,keil5.37版

    原因是 missing compiler version5 xff0c 缺少V5编译器 xff08 compiler version5 xff09 xff0c 因为打开的工程比较老 xff0c 是用v5的编译器写的 xff0c 而现在下的k
  • vector的理解以及模拟实现

    vector的理解以及模拟实现 vector介绍vector常见函数介绍vector模拟实现及迭代器失效讲解 vector介绍 vector文档 vector是表示可变大小数组的序列容器 就像数组一样 xff0c vector也采用的连续存
  • 《数据库的嵌套查询和统计查询》

    选择Study数据库 xff0c 用SQL语句进行以下查询操作 1 xff0e 嵌套查询 求选修了数据结构的学生学号和成绩 span class token keyword SELECT span Sno span class token
  • 由NP完全问题引出动态规划——状态压缩DP

    所有部分都应当在非强制的情况下组合回一起 要记住 xff0c 你重组的那部分原来就是你拆解的 因此 xff0c 如果你不能让它们组合回来的话 xff0c 那一定是有原因的 要想尽一切办法 xff0c 除了用锤头 IBM手册 1925 Par
  • IMU学习的一些记录(不含推导公式,仅做了解)

    IMU xff08 惯性测量元件 xff09 测量三个量 xff1a 1 加速度 2 角速度3地磁 xff08 具体内容不展开 xff09 原始数据采集 IMU芯片与单片机硬件享连 xff0c 通过程序处理数据 上位机 xff08 一般运行
  • STL简介

    STL主要包含了容器 迭代器 算法和string四部分 标准库算法对迭代器而不是容器进行操作 因此 xff0c 算法不能 xff08 直接 xff09 添加或删除元素 一 容器 容器为存储和管理数据对象的集合 xff0c 包含了三种容器 x
  • Linux开发工具(5)——git

    文章目录 git版本控制器git是什么git的操作clone仓库到本地上传本地文件到git git版本控制器 git是什么 标题也说了git就是一个版本控制器 xff0c 版本控制器是用来保存一个文件的历史版本 xff0c 如果有需要可以进
  • 微信支付的常见问题,invalide code

    这段时间在做微信 支付开发 xff0c 在公司的公众号审批下来后 xff0c 我这边的测试用例也已经开发完毕 xff0c 于是拿着具体的数据来调试了 xff0c 大段大段的代码就不贴了 xff0c demo里有 xff0c 这里就说说调试过
  • 记一次串口调试工具发指令无反应问题

    最近新采购一块板子 xff0c 需要连接Android端进行USB串口通讯 首先需要在Windows上用串口调试工具先调通来确认板子没问题 xff0c 调的时候发现 xff0c 咋发指令都不通 xff0c 换了几个调试工具都不行 xff0c
  • PyQt5 基本语法(七):布局管理

    文章目录 布局管理1 布局概念2 布局方式2 1 手动布局2 1 1 绝对布局2 1 2 方法重写 2 2 布局管理器 3 布局管理器概念4 使用演示5 详细使用5 1 QLayout5 1 1 作用5 1 2 功能描述5 1 2 1 构造
  • Qt 实现简单的tcp网络通信

    文章目录 成品效果图 xff1a 代码 xff1a 工具头文件tool hUI文件代码 ui widget h 窗口头文件 widget h xff1a 窗口源文件widget cpp 相关代码说明 xff1a Qt获取本机ip Qt 打开
  • strrchr函数

    lt string h gt 描述 C 库函数 char strrchr const char str int c 在参数 str 所指向的字符串中搜索最后一次出现字符 c xff08 一个无符号字符 xff09 的位置 声明 下面是 st
  • 独轮车串级pid初了解

    今晚满脑子都是如何调好独轮车 xff0c 应该用哪一套方案的时候 xff0c 我找到了一名博主 xff0c 他应该和我也一样大 xff0c 感觉他真的很值得我去学习 xff0c 所有东西几乎都是依靠自己手动制作 xff0c 也不凭借商业化的

随机推荐