2026/2/18 16:15:29
网站建设
项目流程
做网站经常用的术语,微信小视频网站开发,h5在线编辑器,网站怎么做微信扫描登录网站好的#xff0c;我们开始深入探讨C中类与对象的三大核心概念#xff1a;封装、实例化与this指针。一、类的封装#xff1a;数据与行为的结合封装是面向对象编程的基石#xff0c;它将数据#xff08;成员变量#xff09;和操作数据的方法#xff08;成员函数#xff09…好的我们开始深入探讨C中类与对象的三大核心概念封装、实例化与this指针。一、类的封装数据与行为的结合封装是面向对象编程的基石它将数据成员变量和操作数据的方法成员函数捆绑成一个独立的单元——类。通过访问控制符public、private、protected实现信息隐藏class Rectangle { private: // 隐藏内部实现 double width; double height; public: // 对外接口 void setDimensions(double w, double h) { width w; height h; } double getArea() { return width * height; } };关键点private成员仅类内函数可访问外部不可直接修改public接口提供可控的数据访问路径体现了“高内聚低耦合”的设计思想二、对象实例化类的具象化类如同蓝图对象则是根据蓝图建造的实体。实例化有两种方式1. 栈内存分配自动生命周期Rectangle rect; // 默认构造 rect.setDimensions(3, 4); cout rect.getArea(); // 输出122. 堆内存分配手动管理Rectangle* pRect new Rectangle(); // 动态分配 pRect-setDimensions(5, 6); cout pRect-getArea(); // 输出30 delete pRect; // 必须手动释放三、this指针对象的自我标识每个成员函数隐含的常量指针指向调用该函数的对象实例。典型应用场景1. 解决命名冲突class Student { private: string name; public: void setName(string name) { this-name name; // 区分成员变量与参数 } };2. 链式调用class Counter { int count; public: Counter increment() { count; return *this; // 返回对象自身 } }; Counter c; c.increment().increment(); // 连续调用3. 内存本质// 伪代码展示底层行为 void setDimensions(Rectangle* this, double w, double h) { this-width w; this-height h; }四、综合应用示例class BankAccount { private: double balance; string owner; public: BankAccount(string name) : owner(name), balance(0) {} void deposit(double amount) { this-balance amount; // 显式使用this } bool withdraw(double amount) { if (amount balance) { balance - amount; return true; } return false; } }; // 使用示例 BankAccount acc(张三); acc.deposit(1000.0); acc.withdraw(200.0);要点总结封装通过访问控制实现数据保护实例化栈对象自动管理生命周期堆对象需手动new/deletethis指针隐含的常量指针ClassName* const this指向当前调用对象避免命名冲突支持链式调用理解这些基础概念是掌握C面向对象编程的关键第一步。下篇将深入探讨构造函数、析构函数及拷贝控制等进阶内容。