C++ 继承体系全解析:从访问控制到多态实践 | Kai@Codehubble 技术笔记
继承作为 C++ 面向对象编程的三大核心支柱之一,为代码复用与功能扩展提供了强大支持。然而,继承体系中的访问控制机制、多态实现逻辑以及不同继承方式的适用场景,始终是开发者理解的难点。本文将系统梳理 public/protected/private 三种继承方式的特性差异,深入剖析虚函数与访问权限的交互规则,详解多重继承的常见陷阱及解决方案,帮助读者…
C++ 面向对象核心概念全解 | Kai@Codehubble 技术笔记
引言 在面向对象编程体系中,类与类之间的关系构建起程序架构的骨架。本文将以 C++ 语言为实践载体,采用 plantUML 绘制 UML 类图,通过将 plantUML 代码与其渲染图对照展示,结合可视化结果,深度剖析继承(is-a)、聚合 / 组合(has-a)、依赖(dependence)、关联等核心关系模型。同时穿插接口实现机制、重载与重写的…
[笔记]反射的概念和应用
在 Java 编程领域,反射机制如同赋予开发者一把 “万能钥匙”,能在运行时动态操作类与对象。本文将结合实际代码示例,深入剖析反射的核心概念、操作方法及其在代理模式中的应用,帮助读者全面掌握这一高级特性。 一、反射核心概念与作用 1. 什么是反射? 反射(Reflection)是 Java 的一项强大特性,允许程序在运行时动态获取类的信息(如类的属…
[笔记]Effective C++改善程序与设计的55个具体做法_第五章 实现
条款 26:尽可能延后变量定义的出现时间。 实际上就是代码规范中在使用的地方进行定义的另一种说法。目的是为了改善程序运行效率。 条款 27:尽量少做转型动作。 旧式转型: T(expression) // 将expression转型为T (expression)T // 将expression转型为T 两种方式无差别,C风格。 C++新式转型: c…
[笔记]Effective C++改善程序与设计的55个具体做法_第四章 设计与声明
条款 18:让接口容易被正确使用,不易被误用。 核心原则:接口设计的核心目标是实现「编译期拦截错误,运行期降低隐患」。借助类型系统、语义约束及自动化资源管理机制,将潜在错误在代码编写阶段彻底消除。 一、促进正确使用:保持一致性与直觉化 与内置类型行为对齐 案例:自定义Rational类时,为保证与int行为一致,需让a * b = c这一错误写法编…
[笔记]Effective C++改善程序与设计的55个具体做法_第三章 资源管理
常见的资源类型 内存、文件描述器(file descriptors)、互斥锁(mutex locks)、图形界面中的字型和笔刷、数据库连接、网络socks。 条款13: 以对象管理资源 普通示例: class Investment {...}; // "投资类型"继承体系中的root class // 投资类的具体创建,指向In…
[笔记]Effective C++改善程序与设计的55个具体做法_第二章 析构_构造_赋值运算
条款 05: 了解 C++ 默默编写并调用哪些函数 在 C++ 中,即使定义一个看似空无一物的类,编译器也会在需要时隐式生成一系列特殊成员函数。这些函数如同幕后工作者,支撑着对象的基础操作。 空类的默认函数生成机制 当定义class Empty {};这样的空类时,编译器会隐式声明以下特殊成员函数,且仅在被调用时才生成实际实现: class Emp…
[笔记]Effective C++改善程序与设计的55个具体做法_第一章 让自己习惯C++
条款 01:视 C++ 为一个语言联邦 C++ 并非单一范式的编程语言,而是由四种不同的 “次语言” 组成的联邦,每种次语言都有其独特的编程范式和规范: C 语言 以过程式编程为核心,包含基本语法、指针、数组、结构体和预处理器等内容。 规范:注重内存管理、手动资源释放,使用 malloc/free 进行内存操作。 面向对象的 C++ 涵盖类、继承、…
[笔记]Effective C++改善程序与设计的55个具体做法总览
让自己习惯 C++ 条款 01:视 C++ 为一个语言联邦。 条款 02:尽量以 const,enum,inline 替换 #define。 条款 03:尽可能使用 const。 条款 04:确定对象被使用前已被初始化。 构造 / 析构 / 赋值运算 条款 05:了解 C++ 默认编写并调用哪些函数。 条款 06:若不想使用编译器自动生成的函数,就…