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

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

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

http://www.lryc.cn/news/2379934.html

相关文章:

  • iOS音视频解封装分析
  • 突破智能驾舱边界,Imagination如何构建高安全GPU+AI融合计算架构
  • DeepSeek 如何实现 128K 上下文窗口?
  • 云计算简介:从“水电”到“数字引擎”的技术革命
  • 计算圆周率 (python)
  • Python 实现图片浏览和选择工具
  • Python实现的在线词典学习工具
  • ES常识9:如何实现同义词映射(搜索)
  • BGP综合实验(2)
  • java实现poi-ooxml导出Excel的功能
  • 代码随想录算法训练营 Day51 图论Ⅱ岛屿问题Ⅰ
  • 【占融数科-注册/登录安全分析报告】
  • 【CF】Day62——Codeforces Round 948 (Div. 2) CD (思维 + LCM + 枚举因数 | 思维 + 哈希)
  • 基于requests_html的python爬虫
  • 循环神经网络:捕捉序列数据中的时间信息
  • 第35周Zookkeeper+Dubbo 面试题精讲
  • 聊聊更新中断和更新事件那些事儿
  • STM32:按键模块 传感器模块 以及 相关C语言知识(详细讲解)
  • C++23 std::mdspan:多维数组处理新利器
  • 基于高德MCP2.0的智能旅游攻略系统设计与实现
  • 【时时三省】(C语言基础)用函数实现模块化程序设计
  • Flink流处理:实时计算URL访问量TopN(基于时间窗口)
  • 初识函数------了解函数的定义、函数的参数、函数的返回值、说明文档的书写、函数的嵌套使用、变量的作用域(全局变量与局部变量)
  • java collection集合特点知识点详解
  • ngx_http_realip_module 模块概述
  • 自定义CString类与MFC CString类接口对比
  • 华为OD机试真题——考勤信息(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • Go语言测试用例的执行与分析
  • vue3 vite 路由
  • MyBatis:动态SQL