uml类图中c++访问控制符用+(public)、–(private)、#(protected)表示;继承用空心三角箭头从子类指向父类,多继承需分别连线;函数需标注完整类型及const/引用;静态成员加下划线;友元不绘入类图而用注释说明。

类图里怎么画C++的public/private/protected
UML类图中,C++的访问控制符对应标准符号:+ 表示 public,– 表示 private,# 表示 protected。别手滑写成中文“公有”或缩写“pub”,工具(如PlantUML、VS Code插件)只认这些符号。成员变量和成员函数都按实际声明的访问级别标注,哪怕类里用了 using 引入基类成员,也要按最终可见性画——比如基类 protected 成员被派生类 public 继承,在派生类图中就得标为 +。
继承关系用空心三角箭头,但C++多继承要小心方向
C++支持多继承,类图里每个父类都要单独连一条带空心三角形的实线,箭头指向父类。常见错误是把多个父类堆在一条线上,或箭头朝反了(应从子类指向父类)。如果用了虚继承,建议加注释说明,比如在连线旁标注 >,因为UML本身不强制区分虚/非虚,但C++语义差别极大——没标清楚可能导致后续实现时二义性问题。
成员函数参数和返回值怎么写才不丢类型信息
写函数签名时,必须补全C++完整类型,包括 const 限定符和引用符号。例如:getName() : const std::string&,不能简写成 getName() : string。省略 const 或 & 会掩盖关键语义:前者影响能否被常量对象调用,后者决定是否触发拷贝。参数同理,setAge(int a) 比 setAge(a) 严谨得多;若参数是模板类型,如 template<typename t></typename>,类图里通常省略模板细节,除非该模板参数直接影响接口契约。
静态成员和友元在类图里要不要体现
静态成员变量和函数要加下划线,例如 _instance : Singleton*,这是UML规范,也方便一眼识别生命周期差异。友元(friend)不画在类内部,也不画连线——它破坏封装性,类图里没有标准表示法。真有必要说明,只能靠文字注释,比如在类框底部加一行 “> Logger”。强行画连线反而误导,因为友元不是继承或组合关系。
类图不是代码草稿纸,它是设计意图的快照。最容易被忽略的是:没同步更新就直接拿旧图去生成代码,或者把模板特化版本和泛型版本画成同一个类。C++的复杂性往往藏在细节里,比如 explicit 构造函数、noexcept 说明符、SFINAE约束——这些在简单类图里通常不展开,但得心里有数,否则图看着干净,一写代码就崩。
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











