C++程序设计:理解this指针在Student类中的应用
需积分: 44 11 浏览量
更新于2024-08-19
收藏 2.25MB PPT 举报
"C++程序设计中的this指针及其在软件学院课程中的应用"
在C++编程中,`this`指针是一个非常重要的概念,尤其在面向对象编程中起到关键作用。`this`指针在每个非静态成员函数内部隐含地存在,它是一个指向调用当前成员函数的对象的指针。在给出的代码示例中,`this`指针被显式地使用来访问和修改对象的成员。
首先,让我们看下`Student`类的定义:
```cpp
class Student{
public:
Student *p(void);
Student &q(void);
void s(int a);
float score;
private:
char name;
int age;
};
```
在这个类中,有两个成员函数`p()`和`q()`,它们都返回了一个`Student`类型的引用或指针。在这些函数内部,`this`指针被用来访问当前对象的成员。例如,在`p()`函数中:
```cpp
Student *Student::p()
{ age=age+2; return(this);}
```
这里,`this`指针被用于增加`age`成员的值,并且返回`this`指针本身,使得调用者可以进一步操作这个对象。同样,在`q()`函数中:
```cpp
Student &Student::q()
{ age=age+5; return(*this);}
```
`this`指针被用来增加`age`的值,并返回`*this`,即当前对象的引用,允许链式调用。
在`main()`函数中,`this`指针的概念被间接地使用:
```cpp
int main()
{
Student a;
a.s(20); a.score = 70;
(a.p())->score++; // 使用a.p()返回的指针访问score
(a.q()).score++; // 使用a.q()返回的引用访问score
return 0;
}
```
在这里,`a.p()`返回了`a`对象的指针,然后通过指针访问并增加`score`的值。同样,`a.q()`返回了`a`对象的引用,可以直接访问并增加`score`。
课程背景介绍中提到了C++的发展历程和特点。C++由Bjarne Stroustrup在1980年代基于C语言发展而来,增加了面向对象特性,如类、继承、多态等,使得程序设计更加模块化和可重用。C++是C的超集,兼容C的所有语法,同时提供了面向对象编程的机制,成为一种混合型语言。
在面向对象编程中,"面向过程"与"面向对象"是两种不同的编程思想。面向过程强调的是步骤和函数,而面向对象则以对象为中心,将数据和操作数据的方法封装在一起,通过对象之间的交互完成任务。C++的面向对象特性体现在类的定义、对象的创建以及继承、封装和多态这三个核心原则。
在C++中,继承是实现代码重用的重要手段,一个类可以从已有的类(基类)继承属性和行为,创建新的类(派生类)。这允许我们构建层次化的类结构,提高代码的复用性和可扩展性。
`this`指针在C++中起到了连接对象和其成员函数的作用,是实现对象内部操作的关键。通过学习和理解`this`指针,我们可以更好地进行面向对象编程,编写出更高效、可维护的C++代码。
2009-12-29 上传
2014-03-25 上传
2012-04-26 上传
点击了解资源详情
2016-04-20 上传
2020-09-02 上传
2020-08-30 上传
2020-09-05 上传
2020-09-03 上传
我的小可乐
- 粉丝: 26
- 资源: 2万+
最新资源
- EMS:考试管理系统
- Python库 | python-gyazo-0.4.0.tar.gz
- tools_nuvot_8.6emv_x1_x2_emvtools
- SwiftFayeClient:一个用于Faye发布订阅推送服务器的可怕的单文件swift客户端
- dartling_todo_mvc_spirals:从 darling_todos 开发,用于教学目的
- lane:Golang的队列,堆栈和双端队列实现库
- 2x3-sea-battle-websocket-server:海战用websocket服务器
- nanopm:NanoPM,仅单头PatchMatch
- Excel模板教师节次课表.zip
- cognitive-systems-for-health-technology:卫生技术认知系统(TX00DG16)
- newsmlvalidator:NewsML-G2 + XHTML + 微数据 + NITF 验证器
- -mithril.js
- PHP整站程序8套-4.zip
- segment1_神经网络图像_神经网络图像_matlab_图像提取
- my-portfolio:该存储库包含我的投资组合的源代码以及访问URL
- ErabliereApi:API倾销和集中管理者的信息,请访问dans desérablières