1.6 C++基础知识_静态成员_友员
静态成员
问:假设在main函数中创建了许多个Person类对象,要怎么在代码中统计一共创建了多少个Person类对象呢?
答:可以使用静态成员,在Person类中创建一个静态成员cnt,在构造函数中,将cnt++。
同时,由于cnt是private成员,需要在创建一个公共的成员函数getCnt来获取cnt,注意getCnt也需要是静态的。
然后在main函数中调用getCnt函数,就可以获取cnt值了。
注意一点,我们需要创建一个全局变量Person::cnt,否则,cnt实际上是不会存在的,因为只是在Person类的定义中说存在这样的变量,那个操作并不会去创建这个变量。
编译测试结果如下,确实创建了14个Person类的变量。
由于设置了static,所以实际上,Person::cnt变量只有一个,它是属于Person这个类的,不管创建了多少个Person类的对象,Person::cnt都是同一个。
如下图所示,Person::getCnt(),per[0].getCnt(),per[1].getCnt(),获取到的cnt值都是相同的。
友员
假设有下列代码,声明了一个Point类,这个类有两个私有成员 x 和 y,分别代表x轴和y轴的坐标。
可以通过一系列的get和set函数来读取和写入x,y值,通过printInfo函数输出x,y值。
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <unistd.h>using namespace std;class Point {
private:int x;int y;
public:Point() {}Point (int x, int y) : x(x), y(y) {}int getX() { return x; }int getY() { return y; }void setX(int x) { this->x = x; }void setY(int y) { this->y = y; }void printInfo(){cout << "(" << x << ", " << y << ")" << endl;}
};Point add(Point &p1, Point &p2)
{Point n;n.setX(p1.getX() + p2.getX());n.setY(p1.getY() + p2.getY());return n;
}int main(int argc, char **argv)
{Point p1(1, 2);Point p2(2, 3);Point sum = add(p1, p2);sum.printInfo();return 0;
}
其中还有一个add函数,可以将两个坐标的坐标值相加,注意传参使用了引用,这样只要传入4字节的地址值,而不用将全部数值传入。
通过getX和getY获取坐标值,通过setX和setY设置坐标值。
在main函数中调用add函数,然后调用printInfo函数将相加后的新坐标值打印出来。
问:在add函数中,我们调用一共调用了6次函数,才将两个坐标相加,是否有更快捷的办法?
答:有,可以使用友员,将add函数设置为Point类的友员函数,这样add函数就可以直接访问Point类的私有成员,而不是通过函数来调用它们。
在Point类的申明中,将add函数申明为友员函数。
之后就可以在add函数中使用Point类的私有成员了。
测试结果和之前一样。
1.6 C++基础知识_静态成员_友员相关推荐
- dell电脑计算机专业,戴尔Dell专用英语_电脑基础知识_IT计算机_专业资料.doc
戴尔Dell专用英语_电脑基础知识_IT计算机_专业资料 英文縮寫英文全名中文字義5COne methodology of solving problem, 5C including: Charact ...
- 计算机word文档无法工作,word无法打开(WORD文档打不开_解决方法_电脑基础知识_IT/计算机_专业资料)...
word无法打开(WORD文档打不开_解决方法_电脑基础知识_IT/计算机_专业资料),哪吒游戏网给大家带来详细的word无法打开(WORD文档打不开_解决方法_电脑基础知识_IT/计算机_专业资料) ...
- excel宏计算机,excel宏教程_电脑基础知识_IT计算机_专业资料.doc
excel宏教程_电脑基础知识_IT计算机_专业资料 Excel宏教程 一.?? 选中单个单元格 Range("").Select ? 例:Range("C9" ...
- 计算机PPT教材教法,小语教材教法讲义课件_电脑基础知识_it计算机_专业资料.ppt...
小语教材教法讲义课件_电脑基础知识_it计算机_专业资料 绪 论 课堂观察的内涵 课堂观察,顾名思义,就是通过观察者对课 堂的运行状况进行记录.分析和研究,并在此基 础上谋求师范生课堂学习的改善.促进 ...
- 计算机专业高级知识,高级选择_电脑基础知识_IT计算机_专业资料
高级选择_电脑基础知识_IT计算机_专业资料 (79页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 21.9 积分 1.注水泥塞丿施T时,从配水泥浆到反洗 ...
- 计算机机场基础知识,全国机场频率_电脑基础知识_IT计算机_专业资料
全国机场频率_电脑基础知识_IT计算机_专业资料 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 机场频率2009-11-28 15 ...
- 大学计算机专业业余学PS,大学ps_电脑基础知识_it计算机_专业资料—培训.ppt
大学ps_电脑基础知识_it计算机_专业资料-培训 1.5 Photoshop CS的基本概念 在进行图像处理之前需对Photoshop中有关图像的像素与分辨率.文件格式.色彩模式及图层等基本概念进行 ...
- 联想计算机usb启动怎么办,联想电脑bios怎么设置USB启动_电脑基础知识_IT计算机_专业资料...
联想电脑bios怎么设置USB启动_电脑基础知识_IT计算机_专业资料 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 联想电脑bios ...
- 化学相关计算机知识,化学练习_电脑基础知识_it计算机_专业资料.ppt
化学练习_电脑基础知识_it计算机_专业资料 七年级上册第二单元:认识新自我 第一框 世界因生命而精彩 第三课 珍爱生命 他们一样吗? 她们一样吗? 人与其他动物.植物等生命相比,其突出的表现是( ) ...
- 计算机文档编辑ps知识,PS指导书_电脑基础知识_IT计算机_专业资料
PS指导书_电脑基础知识_IT计算机_专业资料 (24页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 游泳的鱼教程新建一个大小设置为780 ...
最新文章
- Html5 音效播放器
- Windows 下的 7 种 DLL 劫持技术
- JZOJ 5192. 【NOI2017模拟7.2】容器
- 数学之美 系列十六(上) 不要把所有的鸡蛋放在一个篮子里 -- 谈谈最大熵模型
- 为什么阿里巴巴Java开发手册中不允许用Executors去创建线程池?
- redis的操作 json对象实例
- python字典统计_python字典计数
- 用CSS的float和clear创建三栏液态布局的方法(转载)
- 使用值类型LazyString分析字符串
- 简单高精度模板(bzoj 1089: [SCOI2003]严格n元树)
- sap中有关地址及电话的相关表
- 苹果6可以分屏吗_苹果可以5g网络吗
- 如何提高代码复用性,定义骨架?
- 十天征服单片机百度云_郭天祥十天征服单片机视频下载地址
- php 头bom_php bom头是什么
- visio中绘制空间坐标系,visio导入科学图形包
- hadoop 起动是的时候报错 localhost: Could not create the Java virtual machine._far beyond me,thks~~_百度空间...
- 国美易卡对IP层数据进行处理,国美易卡对TCP/IP的封装
- CCNA Security 网院期末考试
- 题目内容: 班级第一次列队,通常老师会让同学按身高排成一列,然后1、2报数,喊到1的同学向前一 步,就这样,队伍就变成两列了。假设现在一个班级有n个同学,并且他们已经按身高排成 了一列,同学按身高从1
热门文章
- PC-CPU-001A--cpu架构初识
- MyEclipse中运行tomcat报Confirm Perspective Switch
- 业务中台--系统权限管理简介
- 简述人工泛音与自然泛音
- python中alpha是什么意思_图像处理术语解释:什么是PRGBA和Alpha预乘(Premultiplied Alpha )...
- Persistence.xml 配置说明
- persistence-api依赖的作用
- mysql openfire,【记录】重新生成Openfire的全小写的MySQL数据库表项
- Cannot create table [data_source]: 1118 - Row size too large. The maximum row size for the used tabl
- 华为交换机删除配置命令access_华为交换机配置常用命令