返回:贺老师课程教学链接

  按照封装与信息隐藏的原则,除非特别需要,类中的数据成员需要设置为私有。由此带来的问题是,在类外如何访问这些私有成员?下面4段程序概括了常用的方法。请仔细阅读下面的程序,在阅读过程中,画出对象、变量在内存中的表示图,写出这些程序的运行结果(包括变量的变化过程及程序的最终输出),达到彻底理解这些机制的目标。

(1)通过公共函数为私有成员赋值

class Test
{
private:int x, y;
public:void setX(int a){x=a;}void setY(int b){y=b;}void printXY(void){cout<<"x="<<x<<'\t'<<"y="<<y<<endl;}
} ;
int main()
{Test p1;p1.setX(3);p1.setY(5);p1.printXY( );return 0;
}

(2)利用指针访问私有数据成员

class Test
{
private:int x,y;
public:void setX(int a){x=a;}void setY(int b){y=b;}void getXY(int *px, int *py){*px=x;    //提取x,y值*py=y;}
};
int main()
{Test p1;p1.setX(3);p1.setY(5);int a,b;p1.getXY(&a,&b);  //将 a=x, b=ycout<<a<<'\t'<<b<<endl;return 0;
}

(3)利用函数访问私有数据成员

class Test
{
private:int x,y;
public:void setX(int a){x=a;}void setY(int b){y=b;}int getX(void){return x;   //返回x值}int getY(void){return y;   //返回y值}
};
int main()
{Test p1;p1.setX(3);p1.setY(5);int a,b;a=p1.getX( );b=p1.getY();cout<<a<<'\t'<<b<<endl;return 0;
}

(4)利用引用访问私有数据成员

#include <iostream>
using namespace std;
class Test
{
private:int x,y;
public:void setX(int a){x=a;}void setY(int b){y=b;}void getXY(int &px, int &py) //引用{px=x;    //提取x,y值py=y;}
};
int main()
{Test p1,p2;p1.setX(3);p1.setY(5);int a,b;p1.getXY(a, b); //将 a=x, b=ycout<<a<<'\t'<<b<<endl;return 0;
}

《C++语言基础》程序阅读——和对象找感觉相关推荐

  1. Java之J2se-Java语言基础(程序结构) 教学视频发布了,请小伙伴们前往观看

    Java之J2se-Java语言基础(程序结构) 教学视频发布了,请小伙伴们前往观看 视频地址如下: http://v.youku.com/v_show/id_XODA5NTM3NTAw.html

  2. 【C语言】程序阅读题

    程序阅读题 输出以下程序的结果 #include <stdio.h> int main() {char ch;int k = 0;for(ch = 'A';ch < 'H';ch++ ...

  3. C++语言基础:类和对象

    9.4 类和对象 C++面向对象的三大特征:封装.继承.多态 C++认为万物皆为对象,对象上有属性和行为 具有相同性质的对象,可以抽象为类 人属于人类,车属于车类 9.4.1 封装 9.4.1.1 封 ...

  4. c语言基础程序改错,C语言复习题程序改错

    C语言复习题 程序改错.doc [程序改错]只允许修改错误代码,其他代码不允许修改功能判断m是否为素数,若是返回1,否则返回0.*/include stdio.h/ERROR/int fun int ...

  5. Go语言基础之10--面向对象编程2之方法

    一.方法的定义 之前我们学习了结构体(struct),其仅仅是对数据的封装,并没有行为方法,还不是一个完全的面向对象的思路,所以现在我们来学习在结构体的基础上如何去定义一个方法.结构体(类)+方法=完 ...

  6. c语言基础 —— 程序结构

    5.程序结构 在C语言程序里,一共有三种程序结构:顺序结构.选择结构(分支结构).循环结构 顺序结构:按照实物本身特性,必须一个接着一个来完成. 选择结构:到某个节点后,会根据一次判断结果来决定之后走 ...

  7. 河北科技大学C语言基础程序

    1.编写程序,输入三角形的 3 条边长,求其面积.注意:三角形的任意两边之和必须大于第 3 边,对于不合理的边长输入,要求给出错误提示. #include<stdio.h> #includ ...

  8. C 语言基础——程序运行时间的计算

    理论上的时间复杂度分析,以及实践中的具体的程序运行时间是衡量程序复杂度以及检测程序性能提升的重要指标. 最常用的方式: #include <time.h> time_t t0 = cloc ...

  9. C语言基础-程序员买房子问题

    题目描述 某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员未来年薪不变,且不吃不喝,不用交税,每年所得N万全都积攒起 ...

最新文章

  1. python3 四舍五入
  2. C语言再学习 -- 详解C++/C 面试题 1
  3. 用tcc自己编译自己
  4. How to be a hacker
  5. 利用Chrome开发者工具memory comparison分析一个时间段内的JavaScript代码内存占用率
  6. python高阶函数闭包装饰器_5.初识python装饰器 高阶函数+闭包+函数嵌套=装饰器...
  7. threejs骨架形状
  8. Nodejs 路由封装 封装一个类似 express 的路由
  9. powerdesigner导出mysql数据库表结构到Excel
  10. PC端/电脑端有没有识别二维码并分类的工具
  11. ArcGIS地形图地形标注详解(附练习数据下载)
  12. Xiao Shenyang's classic lines
  13. 数理统计复习笔记二——充分统计量
  14. Get_Web_banner(批量获取网站banner)
  15. 可见光波长和颜色的对应关系
  16. python中randon随机数
  17. 腾讯 Code Review 规范出炉,你还敢乱写代码?
  18. 【论文解读 WWW 2019 | MVAE】Multimodal Variational Autoencoder for Fake News Detection
  19. Istio-智能DNS
  20. Linux进程状态及其相互转换

热门文章

  1. 关于mpi的理论知识以及编写程序来实现数据积分中的梯形积分法。
  2. session的存储方式和配置
  3. 精度问题——直线方程的系数判断实际生产中三点能否确定一个圆
  4. Android优化——UI优化(二) 使用include标签复用布局
  5. 新视角来了:《用户体验四维度》
  6. 腾讯面经 | 数据从业者的一次“典型”面试
  7. 我是如何从技术转向产品的
  8. 一个mybatis处理batch的插件,类似于pageHelper插件
  9. 图片操作scipy.ndimage.imread和scipy.misc.imresize
  10. IPV4 VS IPV6 谈谈省级ipv6的必要性