• 【C++】类的封装 ④ ( 访问控制权限 | struct 和 class 关键字定义类的区别 | 类的默认访问权限 | 类的默认继承方式 )






    一、struct 和 class 关键字定义类的区别




    1、struct 和 class 关键字作用


    在 C++ 语言中 , 使用 struct 和 class 关键字 , 都可以 用于定义 类 , 这些被定义的类 都 具有相似的语法和功能 , 只是在默认情况下有一些不同的行为 ;

    在 C 语言中 , 使用 struct 关键字 , 可以定义结构体 ; 没有 class 关键字 ;


    2、类的默认访问权限


    struct 和 class 关键字 定义的类 的 默认访问权限 不同 ,

    • 使用 struct 关键字 定义的类 , 成员的默认访问权限是 public , 可以在 类的内部 和 类的外部 访问 ;
    • 使用 class 关键字 定义的类 , 成员的默认访问权限是 private , 只能在 类的内部 访问 ;

    下面的代码中 , 使用 struct 关键字 定义的 Student 类中的 成员变量 age 没有显式声明访问权限 , 其默认的成员的访问权限是 public , 可以在 类的外部 和 类的内部 访问 ;

    struct Student {  
    	// 默认的成员的访问权限是 public 
    	// 可以在 类的外部 和 类的内部 访问 
        int age;
    };  
    
    • 1
    • 2
    • 3
    • 4
    • 5

    下面的代码中 , 使用 class 关键字 定义的 Teacher 类中的 成员变量 age 没有显式声明访问权限 , 其默认的成员的访问权限是 private , 只能在 类的内部 访问 ;

    class Teacher{  
    	// 默认的成员的访问权限是 private
    	// 只能在 类的内部 访问
        int age;
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、类的默认继承方式


    struct 和 class 关键字 定义的类 的 默认 继承方式 不同 ,

    • 使用 struct 关键字 定义的类 , 成员的默认 继承方式是 public ;
    • 使用 class 关键字 定义的类 , 成员的默认 继承方式是 private ;

    在 C++ 语言中 , 子类 继承 父类 时 可以获取父类的所有 属性 和 行为 ;

    C++ 的 继承 可以通过使用冒号 : 和 访问修饰符 public / protected / private 来定义 ;

    子类可以继承父类的 3 种方式 :

    • 公有继承 public : 子类 继承 父类的 公有成员 和 保护成员 , 可以将它们作为自己的公有成员和保护成员对外公开 ;
    • 保护继承 protected : 子类 继承 父类的 保护成员 , 子类可以访问父类中的保护成员 , 但不能访问父类中的公有成员 ;
    • 私有继承 private : 子类 继承 父类的 私有成员 ; 不能访问 父类的 公有 和 保护成员 ;

    使用 struct 关键字 定义的类 , 成员的默认 继承方式是 public ,

    // 默认是 public 继承  
    struct Student : public Person { 
        // ...  
    };  
    
    • 1
    • 2
    • 3
    • 4

    使用 class 关键字 定义的类 , 成员的默认 继承方式是 private ;

    // 默认是 private 继承  
    class Teacher : private Person { 
        // ...  
    };
    
    • 1
    • 2
    • 3
    • 4

    4、struct 和 class 关键字 的 推荐用法


    在实际开发中 , 推荐使用 class 关键字 定义 类 , 推荐使用 struct 关键字 定义 结构体 ;

  • 相关阅读:
    力扣大厂热门面试算法题 21-23
    Golang 开发实战day03 - Arrays & Slices
    【第七篇】- Maven 插件
    Windows下自动云备份思源笔记到Gitee
    李永乐线代笔记
    emlog文章页实现自动加关键词内链方法(非插件)
    岭回归自动调参
    扬尘监测:智能化解决方案让生活更美好
    (附源码)spring boot工作计划管理软件 毕业设计 181638
    无敌!我用【C语言】手搓出了一个体系完整的【员工管理系统】还能玩游戏听音乐?(超详细,附完整源码)
  • 原文地址:https://blog.csdn.net/han1202012/article/details/132767275