C++常见面试题(二)

本文探讨了C++中析构函数为何需要是虚函数,以防止内存泄漏,同时也解释了C++默认不将析构函数设为虚函数的原因。此外,介绍了函数指针的概念、用途及示例,重载和重写的区别,以及虚函数在实现动态多态中的关键作用。最后,阐述了const修饰成员函数的目的,强调其在保证函数不修改对象状态中的作用。
摘要由CSDN通过智能技术生成

请你回答一下为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数 考点:虚函数 析构函数

将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向子类对象,释放基类指针可以释放掉子类的空间,防止内存泄漏。

C++默认的析构函数不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存,对于不会被继承的类来说,不需要虚函数,正常的析构函数就行

请你来说一下函数指针

1、定义
函数指针是指向函数的指针变量。

函数指针本身首先是一个指针变量,该指针变量指向一个具体的函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。

C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。
2、用途:

调用函数和做函数的参数,比如回调函数。

3、示例:

char * fun(char * p) {…} // 函数fun
char * (*pf)(char * p); // 函数指针pf
pf = fun; // 函数指针pf指向函数fun
pf§; // 通过函数指针pf调用函数fun

重载和重写

重载:两个函数名,但是参数列表不同(个数,类型),返回值类型没有要求,在

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值