当前位置: 首页 > news >正文

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(); 是面向对象编程中常见的设计模式

如需进一步扩展,还可以添加更多属性(如颜色、价格等)或方法(如获取品牌、比较年份等)。

相关文章:

  • 【科研项目】大三保研人科研经历提升
  • Python元组全面解析:从入门到精通
  • 【基础】Windows开发设置入门8:Windows 子系统 (WSL)操作入门
  • 深入解析Java四大引用类型:从强引用到虚引用的内存管理艺术
  • 软件设计师E-R模型考点分析——求三连
  • STM32实战指南:DHT11温湿度传感器驱动开发与避坑指南
  • 关于ECMAScript的相关知识点!
  • 认识常规贴片电阻
  • 数学实验(方程和微分方程求解)
  • 11.4/Q1,GBD数据库最新文章解读
  • 第二十一次博客打卡
  • Prompt、Agent、MCP关系
  • Mergekit——高频合并算法 TIES解析
  • 嵌入式(C语言篇)Day10
  • DAPO:用于指令微调的直接偏好优化解读
  • 让数据驱动增长更简单! ClkLog用户行为分析系统正式入驻GitCode
  • 人工智能重塑医疗健康:从辅助诊断到个性化治疗的全方位变革
  • 物联网安全技术的最新进展与挑战
  • 深入理解仿函数(Functors):从概念到实践
  • java.io.IOException: Broken pipe \ 你的主机中的软件中止了一个已建立的连接
  • 外媒称北斗挑战GPS地位,外交部:中国的北斗也是世界的北斗
  • 媒体:演员黄杨钿甜耳环事件仍有三大疑问待解
  • 钱进已任外交部新闻司副司长
  • 香港新股市场繁荣:恒瑞医药等4公司同时招股,宁德时代今日港交所上市
  • 视频丨习近平在河南洛阳市考察调研
  • 习近平在河南洛阳市考察调研