C++编程this指针练习
这段代码是用 C++ 编写的,定义了一个 Car
类(类是 C++ 中用于创建对象的蓝图),并通过 main()
函数创建和使用了该类的对象。下面是对整个程序的逐行解释,并在关键部分加上注释说明。
✅ 代码整体功能:
定义一个表示汽车的类 Car
,包含品牌(brand)和年份(year),并提供显示信息、修改年份的方法。最后在主函数中测试这些功能。
🔍 详细代码分析:
cpp
浅色版本
#include <iostream> // 引入输入输出流库
#include <string> // 引入字符串库,用于使用 string 类型
using namespace std; // 使用标准命名空间,避免每次都要写 std::
🚗 定义 Car 类
cpp
浅色版本
class Car {
private:string brand; // 私有成员变量:品牌int year; // 私有成员变量:年份
private:
表示这些数据成员只能被类内部的成员函数访问。
🏗️ 构造函数(Constructor)
cpp
浅色版本
public:Car(string brand, int year) {this->brand = brand;this->year = year;// cout << "构造函数中:" << endl;// cout << this << endl;}
- 构造函数用于初始化新创建的
Car
对象。 this->
是指向当前对象的指针,用来区分参数名和成员变量名。- 注释掉的部分可以打印构造时的信息和地址。
📺 显示车辆信息的函数
cpp
浅色版本
void display() const {cout << "Brand: " << this->brand << ", Year: " << this->year << endl;// 也可以不使用 this->,直接写 brand 和 year}
const
表示这个函数不会修改对象的状态。- 这里可以省略
this->
,因为没有同名局部变量。
🔄 修改年份并返回引用(链式调用支持)
cpp
浅色版本
Car& setYear(int year) {this->year = year; // 更新年份return *this; // 返回当前对象的引用,支持链式调用}
setYear()
方法可以修改年份,并返回自身引用,允许连续调用,例如:car.setYear(2023).display();
🧪 主函数(程序入口)
cpp
浅色版本
int main() {
创建并显示一个宝马汽车对象:
cpp
浅色版本
Car car("baoma", 2024); // 创建一个 Car 对象car.display(); // 显示品牌和年份
链式调用设置年份并显示:
cpp
浅色版本
car.setYear(2023).display(); // 修改年份为2023后再次显示
- 因为
setYear()
返回的是*this
,所以可以直接调用display()
。
被注释的其他测试代码:
cpp
浅色版本
// Car myCar("benci", 2024); // 另一个例子
// myCar.display();// cout << "main函数中:" << endl;
// cout << &car << endl;// Car car2("baoma", 2024);
// cout << "main函数中:" << endl;
// cout << &car2 << endl;
- 这些被注释的语句可用于查看对象的内存地址,验证每个对象是否不同。
🏁 程序结束
cpp
浅色版本
return 0;
}
✅ 输出结果(运行程序后的预期输出):
浅色版本
Brand: baoma, Year: 2024
Brand: baoma, Year: 2023
💡 总结
功能 | 描述 |
---|---|
构造函数 | 初始化品牌和年份 |
display() | 显示汽车的品牌和年份 |
setYear() | 修改年份并返回对象引用以支持链式调用 |
链式调用 | car.setYear(2023).display(); 是面向对象编程中常见的设计模式 |
如需进一步扩展,还可以添加更多属性(如颜色、价格等)或方法(如获取品牌、比较年份等)。