C++ 面试宝典——基础知识(二)

本文深入探讨C++面试中的关键知识点,包括析构函数为何必须为虚函数,函数指针的定义、用途及示例,fork函数的原理和使用,析构函数的作用,静态函数与虚函数的区别,重载与覆盖的细节,strcpy和strlen函数的使用,以及虚函数和多态的理解。此外,还讨论了++i和i++的区别,以及C++中定义常量的方式和内存位置。
摘要由CSDN通过智能技术生成

一、为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数

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

C++默认的析构函数不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存。而对于不会被继承的类来说,其析构函数如果是虚函数,就会浪费内存。因此C++默认的析构函数不是虚函数,而是只有当需要当作父类时,设置为虚函数。

二、说一下函数指针

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

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

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

2、用途:
调用函数和做函数的参数,比如回调函数。

3、示例:

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

三、说一下fork函数

fork

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值