C++高频面试知识总结 part1

1.什么是类?

是一种用户定义的数据类型,包含了数据成员和函数成员。数据成员存储与类相关的状态,函数成员定义对数据进行操作的方法。

2.面向对象程序设计思想?

面向对象程序设计(OOP)有三大特征,封装继承和多态。
封装:将数据属性和操作方法打包,形成独立的对象,只暴露必要的接口。
继承:允许子类继承父类的属性和方法,并且可以创建新的方法。
多态:不同类的对象使用同一接口进行调用,有不同的行为。

3.多态的实现?

  • 静态多态:编译时发生,通过函数重载、运算符重载实现
    • 函数重载:参数类型或者数量不同来实现
    • 运算符重载:为类定义新的操作符函数
  • 动态多态:运行时发生,通过虚函数实现
    • 虚函数:一个函数在基类被声明为虚函数时,可以在派生类重写
    • 纯虚函数和抽象类:类中声明一个虚函数不提供实现(=0)包含纯虚函数成为抽象类,抽象类不能被实例化,只能被继承,派生类必须提供纯虚函数的实现

4.动态多态的作用?

允许运行时通过基类指针或引用调用派生类的方法,使得相同操作有不同的效果。
实现的必要条件:
1.继承:必须有两个类,基类和派生类
2.基类中有虚函数:基类中至少一个函数被virtual关键字声明为虚函数,派生类通常会重写该虚函数
3.基类的指针或引用:需要通过基类的指针或引用掉用虚函数,这样c++运行时才能够根据虚函数表来决定调用哪个函数
4.动态绑定

5.动态绑定的实现?

通过虚函数实现。当我们用基类指针或引用调用一个虚函数,C++会根据对象实际类型决定调用的函数。示例code如下:

//基类
class Animal {
   
   
    virtual void Sound() {
   
   
        std::cout << "animal sound" << std::endl;
    }
};

//派生类
class Dog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值