C++面试常问的几个问题

本文详细介绍了C++中的面向对象特性,包括封装、继承和多态,强调了虚函数在实现多态性中的关键作用。同时,探讨了构造函数和析构函数的使用,特别是析构函数作为虚函数的重要性,确保子类资源的正确释放。此外,还区分了函数重载和重写的概念,并解释了多态如何通过基类指针调用不同子类的同名函数。
摘要由CSDN通过智能技术生成

1.面向对象的几大特点

封装、继承、多态
.
.
.

2.虚函数

类成员函数前面添加virtual关键字的函数被称为虚函数。
作用是实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名成员函数。
比如父类中的一个虚函数,在不同的子类中有不同的重写它的同名函数,要一次性把装在数组中的多个子类对象的该函数都调用一遍,就可以将其基类的该函数定义为虚函数,用一个基类指针遍历子类数组的同时调用函数。
.
.
.

3.构造函数和析构函数

C++中,构造函数不可以是虚函数,而析构函数可以且常常是虚函数。
为什么析构函数常常是虚函数?
因为在C++编程中,经常用基类指针指向子类对象,并通过指针操作子类对象。
此时要通过这个指针delete它指向的子类对象时,如果基类析构函数不是虚函数,它就只会调用基类析构函数不会调用子类析构函数,导致内存释放的不彻底。
.
.
.

4.重载和重写的区别

4.1重载

在同一个类中可以有多个同名函数,它们的参数和返回值可以不同。这叫重载。

4.2重写

在子类中重写父类的函数,从子类对象调用时,执行的是子类中重写的函数,而不是父类中的同名函数。父类函数被屏蔽。这叫重写。
.
.
.

5.多态

用基类指针操作不同子类的对象中的同一函数,函数执行的操作不同。
需要将基类的该函数定义为虚函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值