You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将UML中的派生(/)访问修饰符及类图转为C++代码?

UML类图转C++代码指南(含“/”派生成员标记解析)

一、通用转换步骤

  • 类定义:UML中的类直接对应C++的class或struct,类名完全复用。
  • 成员可见性映射:
    • + → public:类外部可直接访问
    • - → private:仅类内部可访问
    • # → protected:类内部及子类可访问
  • 成员方法/变量:UML中的成员名、参数列表、返回类型直接对应C++的成员函数或变量定义。
  • 继承关系:UML中箭头指向父类,C++用class 子类 : 访问修饰符 父类语法实现,public是最常用的继承方式。

二、UML中“/”标记的解析与C++实现

UML里的/是继承成员的标记,用来区分当前类自己定义的成员和从父类继承来的成员。在C++中,这类成员不需要额外语法标记,继承的成员会自动纳入子类作用域,遵循以下规则:

  1. 默认继承行为:继承的成员保持父类中的可见性,可直接在子类中使用。示例:
    class Animal {
    protected:
        int age;
    };
    
    class Dog : public Animal {
    public:
        void set_age(int a) {
            age = a; // 直接使用继承的age变量,无需额外标记
        }
    };
    
  2. 显式修改继承成员可见性:如果UML中/标记同时要求改变成员可见性(比如把父类protected成员改为子类public),用C++的using关键字实现:
    class Animal {
    protected:
        int age;
    };
    
    class Dog : public Animal {
    public:
        using Animal::age; // 将继承的protected成员age改为public可见
    };
    
    // 外部可直接访问Dog对象的age
    Dog my_dog;
    my_dog.age = 3;
    

三、注意事项

  • 别混淆/成员标记和继承访问修饰符:继承访问修饰符(public/protected/private)写在子类继承列表中,/仅标记成员来源。
  • 多数场景下,C++无需显式写出继承成员,除非要修改其可见性或覆盖父类方法。

内容的提问来源于stack exchange,提问作者Brijesh Gurung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:35:20