news 2026/6/10 13:15:58

C++核心三要素:封装、实例化与this

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++核心三要素:封装、实例化与this

好的,我们开始深入探讨C++中类与对象的三大核心概念:封装、实例化与this指针。


一、类的封装:数据与行为的结合

封装是面向对象编程的基石,它将数据(成员变量)和操作数据的方法(成员函数)捆绑成一个独立的单元——类。通过访问控制符(publicprivateprotected)实现信息隐藏:

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(); // 输出:12
2. 堆内存分配(手动管理)
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);

要点总结

  1. 封装:通过访问控制实现数据保护
  2. 实例化
    • 栈对象:自动管理生命周期
    • 堆对象:需手动new/delete
  3. this指针
    • 隐含的常量指针ClassName* const this
    • 指向当前调用对象
    • 避免命名冲突,支持链式调用

理解这些基础概念,是掌握C++面向对象编程的关键第一步。下篇将深入探讨构造函数、析构函数及拷贝控制等进阶内容。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 13:38:23

C++模板编程:泛型代码的终极武器

泛型编程是C的核心特性之一&#xff0c;通过模板&#xff08;template&#xff09;实现类型无关的代码复用。以下是关键要点解析&#xff1a; 一、模板基础 函数模板 定义通用函数框架&#xff0c;支持任意类型参数&#xff1a; template <typename T> T max(T a, T b) {…

作者头像 李华
网站建设 2026/6/10 10:38:26

为什么必须“结构透视 + 动态人车模型”协同建设

为什么必须“结构透视 动态人车模型”协同建设——从空间可见到行为可理解的必然技术组合在仓储数字化与智能化建设过程中&#xff0c;结构级三维建模与动态目标可视化往往被视为两个独立能力模块&#xff1a; 一类系统重“空间”&#xff0c;强调库房三维模型、结构展示与可视…

作者头像 李华
网站建设 2026/6/10 12:11:57

如何在大数据中使用Cassandra进行数据挖掘

从数据海洋到金矿&#xff1a;用Cassandra解锁大数据挖掘的高效之道 关键词 Cassandra | 大数据挖掘 | 分布式数据库 | 列族模型 | 数据建模 | 实时分析 | 批处理 摘要 当我们谈论“大数据挖掘”时&#xff0c;往往会联想到两个核心问题&#xff1a;如何高效存储PB级别的原…

作者头像 李华
网站建设 2026/6/10 12:11:57

入职背调通常会查哪些信息?

入职背景调查是招聘流程中的重要一环&#xff0c;旨在核实候选人提供信息的真实性。专业的背调通常涵盖以下几个核心方面&#xff0c;以确保人选的匹配度与诚信度。首先是基础信息核实&#xff0c;包括身份信息、教育背景及资格证书。这类信息可通过官方数据库进行验证&#xf…

作者头像 李华
网站建设 2026/6/10 11:33:10

毕业生必备:3款降AI神器实测+DeepSeek、豆包、Kimi免费降AI指令

知网AIGC检测报告一片红&#xff0c;AI率怎么都降不下去&#xff0c;眼看截稿日期就要到了。 为了帮大家解决降ai难题&#xff0c;我花费了半个月把市面上能找到大模型降重指令、降ai工具都试了一遍。今天就给大家分享这套我亲测有效的方案&#xff0c;包含“手动修改指令”和…

作者头像 李华
网站建设 2026/6/10 12:08:00

小白也能懂:VLLM社区推测解码技术加速LLM推理详解

推测解码是一种无损加速LLM推理的技术&#xff0c;通过小模型推测多个token&#xff0c;大模型并行验证&#xff0c;可提升2-2.7倍推理速度。它适用于低QPS、延迟敏感、内存受限且需要长回复的场景&#xff0c;但不适合高并发、短回复和GPU已饱和的环境。使用时需根据场景特征判…

作者头像 李华