C++面向对象

面向对象的三大特征

  • 封装
    • 目的:隐藏实现细节,实现模块化
    • 特性:
      • 访问权限
        • public:对所有对象开放。
        • protected:对子类开放。
        • private:只对自己开放。可以通过友元类打破 private 限定。
      • 对属性和方法进行限定。
      class A {
             
      	friend class B; // B 可以访问 c
      public:
      	int a;
      	void func();
      protected:
      	int b;
      private:
      	int c;
      }
      
  • 继承
    • 在无需修改基类的情况下通过继承实现对基类功能的扩展
    • 特性:
      • 权限继承:基类成员在子类中的最高权限是什么。

        基类成员访问权限 继承方式 基类成员在子类中的权限
        public
        protected
        private
        public public
        protected
        不允许
        public
        protected
        private
        protected protected
        protected
        不允许
        public
        protected
        private
        private private
        private
        不允许
      • 可以通过 using 来提高基类成员在子类中的权限,只能提高,不能降低。

        class Base {
                 
        protected:
            void func() {
                 
                std::cout << "Base func" << std::endl;
            }
        };
        
        class A: public Base {
                 
        public:
            // 使用 using 声明提升访问级别
            using Base::func;
        };
        
        int main() {
                 
            A a;
            a.func();  // 现在可以公开访问 func
            return 0;
        }
        
      • 支持多继承。

        class B : public A {
                 }
        class D : protected A {
                 }
        		
        class E : public A, B {
                 }
        
      • 支持接口继承(通过抽象类和纯虚函数实现)。

        // 拥有至少一个纯虚函数的类称为抽象类。
        // 抽象类不能被实例化,它主要用于定义子类应遵循的接口规范。
        class IShape {
                 
        public:
            virtual ~IShape() {
                 }  // 虚析构函数,保证派生类的析构函数被正确调用
        
            virtual void draw() const = 0;  // 纯虚函数
            virtual double area() const = 0; // 纯虚函数
        };
        
  • 多态
    • 目的:一个接口有多种形态,通过实现接口重用,增强可扩展性
    • 特性:
      • 静态多态(编译期)函数重载(复用同一个函数名,改变函数参数。不包括修改函数的返回值类型,两个函数若只有返回值类型不同,则会编译报错)。
      • 动态多态(运行时)虚函数重写需要有继承࿰
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值