
VC++习题解答:私有数据成员访问与构造函数/赋值函数应用
下载需积分: 15 | 173KB |
更新于2024-08-10
| 96 浏览量 | 举报
收藏
本资源提供了解决《Visual C++面向对象编程教程》第三章习题的答案。第35题讨论的是关于类的私有数据成员访问问题。原始代码试图在类外直接访问私有成员变量`x`和`y`,这违反了封装原则,因为私有数据应该只在类的内部被访问。改正方法有两种:
1. 使用构造函数赋值:通过在类的公共部分提供一个带有参数的构造函数,如`Point(int a, int b)`,在创建对象时初始化私有数据。这样可以在构造函数内部确保数据的正确设置,代码示例如下:
```cpp
class Point {
private:
int x, y;
public:
Point(int a, int b) { x = a; y = b; }
void Display() { cout << "x=" << x << ",y=" << y << endl; }
};
```
在`main()`函数中通过构造函数创建对象并显示其值。
2. 公有赋值函数:另一种方法是提供一个公有的赋值函数`Setxy(int a, int b)`,允许外部对象安全地改变私有数据。然后在`main()`中通过这个函数设置值,代码如下:
```cpp
class Point {
private:
int x, y;
public:
void Setxy(int a, int b) { x = a; y = b; }
void Display() { cout << "x=" << x << ",y=" << y << endl; }
};
int main() {
Point point1;
point1.Setxy(100, 200);
point1.Display();
return 0;
}
```
第36题要求输出特定时间,但没有给出程序,所以无法提供具体答案。通常,你需要提供一个包含当前时间的函数或使用系统时间库来获取当前时间并输出。
第37题涉及静态成员函数的问题,由于没有完整的程序代码,错误可能在于静态成员函数试图访问非静态数据成员`m_ID`。静态成员函数应该与某个实例无关,而这里需要区分是操作对象还是类本身。正确的做法是,如果`GetID`需要访问`m_ID`,那么应该传入一个对象实例。改正后的部分可能是:
```cpp
long Person::GetID(const Person& x) {
return x.m_ID;
}
```
然后在`main()`中调用:
```cpp
cout << "The ID is: " << person1.GetID() << endl;
```
注意,这里使用了引用传递,以确保对正确对象的`m_ID`进行操作。
相关推荐










李_涛
- 粉丝: 60
最新资源
- VC++实现食品评估系统中读取Excel数据示例
- IceSword进程管理:揭示并清除Windows系统隐藏后门
- 物资管理系统原型及需求分析
- 深入C语言编程:九百例详解
- ASP.Net个人网站管理系统v1.0功能展示
- RegExTool:批量匹配正则表达式测试工具
- 打造个性HTML黄金风格文件夹图标
- TD-SCDMA移动通信系统的介绍与应用分析
- 深入理解Python编程:代码与HTML实践解析
- JSF初学者入门指南:简体中文版全面解读
- 基于SSH框架的房屋出租系统整合开发
- PHP实现图片在线剪裁及缩放功能源码解析
- 掌握ARM嵌入式系统设计的起点
- 《Enterprise Java with UML》源码及设计文档光盘内容分享
- 揭秘操作系统隐藏进程的黑科技:EPROCESS链摘除方法
- 旅行社信息管理系统开发与实践
- C# Winform实现邮件发送功能源码解析
- Oracle OCP认证TestKing 1Z0-042学习资料
- 中兴CDMA2000网络优化技术内部培训资料
- commons-pool-1.4类库在Spring和Hibernate整合中的应用
- VC++环境下BMP图像的读取与保存操作
- 使用OLE技术实现的Excel报表读写动态库
- mcs-51平台下微型PLC源代码开发示例
- 揭秘计算机销售:内部培训手册核心技巧