C++指针访问私有数据成员详解:谭浩强《程序设计》案例

需积分: 9 1 下载量 38 浏览量 更新于2024-08-19 收藏 8.66MB PPT 举报
在C++程序设计中,谭浩强的《C++程序设计谭浩强完成版》PPT中详细讲解了如何利用指针访问私有数据成员这一核心概念。在类的定义中,如`class Test`所示,它包含两个私有成员变量`int x`和`int y`。这些变量是不能直接从类的外部访问的,因为它们被声明为私有(private),以确保数据封装。 `Test`类有两个公有方法:`Setxy()`和`Getxy()`。`Setxy(int a, int b)`用于设置`x`和`y`的值,`Getxy(int *px, int *py)`则是用来获取`x`和`y`的值,通过指针参数`px`和`py`传递。这里的关键在于,尽管`x`和`y`是私有变量,但通过指针可以间接访问,实现数据的封装和解封装。 在`main()`函数中,我们创建了`Test`类型的对象`p1`和`p2`,然后调用`p1.Setxy(3, 5)`设置了初始值。接下来,定义了两个整型变量`a`和`b`,并将`p1`的`x`和`y`值通过`&a`和`&b`(取址运算符)传递给`Getxy()`方法。这样,`*px`和`*py`实际上就是`x`和`y`的地址,所以`p1.Getxy(&a, &b)`会将`p1`的`x`赋值给`a`,`y`赋值给`b`。 最后,`cout`语句输出了`a`和`b`的值,即3和5,验证了数据的正确传递。在这个过程中,`&a`和`&b`作为指针参数起到了桥梁作用,使得我们能够在保持数据封装的前提下,实现了私有成员的间接访问。 这个例子展示了C++中的指针在处理私有数据成员时的重要性和灵活性。理解并熟练运用指针,能够更好地管理类的内部数据,提高代码的可维护性和复用性。同时,这也体现了C++语言对于数据封装的重视,以及面向对象编程中封装、继承和多态等核心概念的实际应用。