静态成员

问:假设在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++基础知识_静态成员_友员相关推荐

  1. dell电脑计算机专业,戴尔Dell专用英语_电脑基础知识_IT计算机_专业资料.doc

    戴尔Dell专用英语_电脑基础知识_IT计算机_专业资料 英文縮寫英文全名中文字義5COne methodology of solving problem, 5C including: Charact ...

  2. 计算机word文档无法工作,word无法打开(WORD文档打不开_解决方法_电脑基础知识_IT/计算机_专业资料)...

    word无法打开(WORD文档打不开_解决方法_电脑基础知识_IT/计算机_专业资料),哪吒游戏网给大家带来详细的word无法打开(WORD文档打不开_解决方法_电脑基础知识_IT/计算机_专业资料) ...

  3. excel宏计算机,excel宏教程_电脑基础知识_IT计算机_专业资料.doc

    excel宏教程_电脑基础知识_IT计算机_专业资料 Excel宏教程 一.?? 选中单个单元格 Range("").Select ? 例:Range("C9" ...

  4. 计算机PPT教材教法,小语教材教法讲义课件_电脑基础知识_it计算机_专业资料.ppt...

    小语教材教法讲义课件_电脑基础知识_it计算机_专业资料 绪 论 课堂观察的内涵 课堂观察,顾名思义,就是通过观察者对课 堂的运行状况进行记录.分析和研究,并在此基 础上谋求师范生课堂学习的改善.促进 ...

  5. 计算机专业高级知识,高级选择_电脑基础知识_IT计算机_专业资料

    高级选择_电脑基础知识_IT计算机_专业资料 (79页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 21.9 积分 1.注水泥塞丿施T时,从配水泥浆到反洗 ...

  6. 计算机机场基础知识,全国机场频率_电脑基础知识_IT计算机_专业资料

    全国机场频率_电脑基础知识_IT计算机_专业资料 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 机场频率2009-11-28 15 ...

  7. 大学计算机专业业余学PS,大学ps_电脑基础知识_it计算机_专业资料—培训.ppt

    大学ps_电脑基础知识_it计算机_专业资料-培训 1.5 Photoshop CS的基本概念 在进行图像处理之前需对Photoshop中有关图像的像素与分辨率.文件格式.色彩模式及图层等基本概念进行 ...

  8. 联想计算机usb启动怎么办,联想电脑bios怎么设置USB启动_电脑基础知识_IT计算机_专业资料...

    联想电脑bios怎么设置USB启动_电脑基础知识_IT计算机_专业资料 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 联想电脑bios ...

  9. 化学相关计算机知识,化学练习_电脑基础知识_it计算机_专业资料.ppt

    化学练习_电脑基础知识_it计算机_专业资料 七年级上册第二单元:认识新自我 第一框 世界因生命而精彩 第三课 珍爱生命 他们一样吗? 她们一样吗? 人与其他动物.植物等生命相比,其突出的表现是( ) ...

  10. 计算机文档编辑ps知识,PS指导书_电脑基础知识_IT计算机_专业资料

    PS指导书_电脑基础知识_IT计算机_专业资料 (24页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 游泳的鱼教程新建一个大小设置为780 ...

最新文章

  1. Html5 音效播放器
  2. Windows 下的 7 种 DLL 劫持技术
  3. JZOJ 5192. 【NOI2017模拟7.2】容器
  4. 数学之美 系列十六(上) 不要把所有的鸡蛋放在一个篮子里 -- 谈谈最大熵模型
  5. 为什么阿里巴巴Java开发手册中不允许用Executors去创建线程池?
  6. redis的操作 json对象实例
  7. python字典统计_python字典计数
  8. 用CSS的float和clear创建三栏液态布局的方法(转载)
  9. 使用值类型LazyString分析字符串
  10. 简单高精度模板(bzoj 1089: [SCOI2003]严格n元树)
  11. sap中有关地址及电话的相关表
  12. 苹果6可以分屏吗_苹果可以5g网络吗
  13. 如何提高代码复用性,定义骨架?
  14. 十天征服单片机百度云_郭天祥十天征服单片机视频下载地址
  15. php 头bom_php bom头是什么
  16. visio中绘制空间坐标系,visio导入科学图形包
  17. hadoop 起动是的时候报错 localhost: Could not create the Java virtual machine._far beyond me,thks~~_百度空间...
  18. 国美易卡对IP层数据进行处理,国美易卡对TCP/IP的封装
  19. CCNA Security 网院期末考试
  20. 题目内容: 班级第一次列队,通常老师会让同学按身高排成一列,然后1、2报数,喊到1的同学向前一 步,就这样,队伍就变成两列了。假设现在一个班级有n个同学,并且他们已经按身高排成 了一列,同学按身高从1

热门文章

  1. PC-CPU-001A--cpu架构初识
  2. MyEclipse中运行tomcat报Confirm Perspective Switch
  3. 业务中台--系统权限管理简介
  4. 简述人工泛音与自然泛音
  5. python中alpha是什么意思_图像处理术语解释:什么是PRGBA和Alpha预乘(Premultiplied Alpha )...
  6. Persistence.xml 配置说明
  7. persistence-api依赖的作用
  8. mysql openfire,【记录】重新生成Openfire的全小写的MySQL数据库表项
  9. Cannot create table [data_source]: 1118 - Row size too large. The maximum row size for the used tabl
  10. 华为交换机删除配置命令access_华为交换机配置常用命令