C++中面向对象三大特征(八股一)

封装:限制属性和方法,隐藏实现细节,实现模块化。有三种访问权限 public(对所有对象开放)、protected(对子类开放)、private(只对自己开放,但是可以通过友元类打破限制,关键词friend)

继承:无需修改原有类的情况下通过继承实现对功能的扩展。可以用using修改基类成员在子类中的权限

这种方法适用于基类的 publicprotected 成员,但无法改变 private 成员的访问权限,因为派生类无法直接访问基类的 private 成员。

class Base {
public:
    void publicMethod() {}
protected:
    void protectedMethod() {}
private:
    void privateMethod() {}
};

class Derived : public Base {
public:
    // 使用 using 声明将基类的 protected 成员提升为 public
    using Base::protectedMethod;
    // 尝试将基类的 private 成员提升为 public会导致编译错误
    // using Base::privateMethod;
};

多继承:可以同时继承多个基类

接口继承:一个接口从另一个接口派生,继承其方法签名,从而形成新的接口。

**多态:**一个接口多种形态,通过实现接口重用,增强可扩展性。

1、静态多态:函数重载,编译器确定,允许在同一作用域中声明多个功能类似的同名函数(参数个数或者类型或者参数顺序不一样导致不同形态)注意:不能通过返回值类型来区别重载。

原理:函数名修饰。

预编译:把头文件中的函数声明拷贝到源文件中,避免编译过程中的语法分析找不到函数定义。

编译:语法分析,同时进行符号汇总(函数名)

汇编:生成函数名到函数地址的映射,方便之后通过函数名找到函数定义位置,从而执行函数

链接:将多个文件中的符号表汇总合并

2、动态多态:虚函数重写,在运行时确定(首先要有继承,通过子类重写基类的虚函数实现)

虚函数重写:在基类的函数前加上virtual关键字,在派生类重写该函数,运行时会根据对象的类型来调用对应的函数。如果对象的类型是基类,则调用基类的函数。如果对象的类型是派生类,则调用派生类的函数。

原理:

​          早绑定:编译器编译时已经确定对象调用的函数地址。

​          晚绑定:若使用virtual函数,则会为类生成虚表(一维数组,存放虚函数地址),类对象构造时会初始      化该虚函数表指针。虚函数表指针在构造函数中初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值