C++学习:类与对象及this指针解析
需积分: 10 32 浏览量
更新于2024-11-21
收藏 224KB PPT 举报
"C++基础课程课件 下载"
在C++编程语言中,类和对象是面向对象编程的基础。类是一种用户自定义的数据类型,它定义了一组数据(称为数据成员)和操作这些数据的函数(称为成员函数)。对象则是类的实例,它拥有类中定义的所有数据成员和成员函数。
在创建类对象后,我们可以通过`.`操作符来访问对象的数据成员和成员函数。例如,`CTest` 类有一个 `n` 成员,我们可以通过 `test1.n` 和 `ptest2->n` 来访问这两个不同对象的 `n` 成员。这里,`->` 操作符用于指针对象,等同于 `(*ptr).member`,其中 `ptr` 是指向对象的指针。
在成员函数内部,C++ 使用了一个隐含的参数,即 `this` 指针。`this` 指针是一个指向调用成员函数的对象的指针,它使得成员函数能够访问调用它的对象的成员。例如,`CTest` 类中的 `getn()` 函数通过 `this->n` 访问 `n` 成员。`this` 的定义形式是 `T*const this`,表示它是一个常量指针,指向类型的 `T`(在这里是 `CTest` 类)。
`this` 指针在创建对象时被初始化为指向该对象,当成员函数被调用时,系统会自动将 `this` 指针作为隐含的参数传递给该函数。由于 `this` 是在成员函数内部定义的,所以它只能在成员函数中使用。每个对象调用同一成员函数时,`this` 指针会指向不同的对象,从而访问不同的数据成员。
下面的代码示例展示了 `this` 指针的使用:
```cpp
class A {
public:
A(int x1) { x = x1; }
void disp() { cout << "x=" << x << endl; }
private:
int x;
};
int main() {
A a(1), b(2);
cout << "a:"; a.disp(); // 调用a的disp成员函数,this指向a
cout << "b:"; b.disp(); // 调用b的disp成员函数,this指向b
return 0;
}
```
另一个例子显示了 `this` 指针的值:
```cpp
class A {
public:
A(int x1) { x = x1; }
void disp() {
cout << "\nthis=" << this << " when x=" << this->x;
}
private:
int x;
};
int main() {
A a(1);
a.disp(); // 在disp成员函数中,this指针指向a,显示其地址和x的值
return 0;
}
```
这两个示例演示了如何在成员函数中使用 `this` 指针来访问和显示对象的数据成员以及对象自身的地址。理解 `this` 指针的使用对于深入学习 C++ 面向对象编程至关重要。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2015-01-03 上传
2011-04-01 上传
2010-06-21 上传
2008-10-30 上传
diandiansb
- 粉丝: 0
- 资源: 7
最新资源
- Evergarden:思想和笔记的公共数字花园
- [论坛社区]okphp BBS v4.0_okphpbbs.rar
- ipetfinals
- ASP 网站站长计数器 v1.0
- DICOM 示例文件:包含大脑 MR 图像的示例 DICOM 文件。-matlab开发
- FM5830_code,c语言源码怎么写,c语言项目
- C-Blog 2.1 正式版_cblog2-mysql_博客论坛网站开发模板(使用说明+源代码+html).zip
- todo-cloudbuild
- SpeakT-crx插件
- 安卓伏羲X v2.0.1双版 免Root装载Xposed模块功能.txt打包整理.zip
- json-conditions:简单的条件逻辑以针对javascript对象进行评估
- 分子查看器:用于绘制简单的 .pdb 文件的轻量级 m 文件。-matlab开发
- 绿色耀眼互联网产品企业网站模板5536_网站开发模板含源代码(css+html+js+图样).zip
- light-sphere.tar.gz_C/C++_源码,c语言读网页源码,c语言项目
- wztlink1013_github_io-master.zip
- kirby-multilist:在Kirby 3中快速管理具有多个字段的列表