程序员面试宝典C++

名词解释

1.数据抽象

  • 数据抽象是一种依赖于接口和实现分离的编程技术。
  • 令程序员可以忽略类型的实现细节,只关注类型执行的操作
  • 保证类内数据的安全性,不被随意修改

2.构造函数

  • 对象创建时,用来控制对象初始化过程的函数叫作构造函数。
  • 构造函数的任务是初始化类对象的数据成员

3.各种构造函数

  • 默认构造函数:当没有提供任何实参时使用的构造函数
  • 显式构造函数:可以用一个单独的实参调用但是不能用于隐式转换的构造函数
  • 合成默认构造函数:没有显式地定义任何构造函数类,编译器会为其创建合成默认构造函数

4.友元

  • 类向外部提供其非公有成员访问权限的方式
  • 友元的访问权限和成员函数一样
  • 友元可以是类也可以是函数

5.拷贝构造函数

  • 将新对象初始化为同类型另一对象的副本
  • 当以传值的方式向函数传递对象或者从函数返回对象时会隐式使用拷贝构造函数

6.删除的函数

  • 不能使用的函数
  • =delete
  • 用途是告诉编译器不要合成拷贝操作

7.析构函数

  • 释放对象使用的资源,并销毁对象的非静态数据成员
  • 当对象离开作用域或者被释放时进行清理工作
  • 编译器会自动销毁每个数据成员。类类型的成员调用其析构函数来销毁。内置类型或者复合类型 的成员的销毁不需要任何操作

8.重载运算符

  • 一种函数
  • 重定义了运算符应用于类类型对象时的含义

9.各种合成函数

  • 合成赋值运算符
    • 编译器为未显示定义对应的构造函数的类创建的合成的拷贝赋值运算符版本
    • 除非定义为删除的,合成赋值运算符会逐成员将右侧运算对象赋予左侧运算对象
  • 合成拷贝构造函数
    • 除非定义为删除的,合成拷贝构造函数分别从给定对象拷贝成员来逐成员地初始化新对象
  • 合成析构函数
    • 函数体为空

10.抽象基类

  • 含有纯虚函数的类,无法创建抽象基类的对象

11.基类

  • 可供其他类继承的类。基类的成员也将成为派生类的成员

12.动态绑定

  • 使用动态绑定,可以在一定程度上忽略相似类型的区别
  • 直到运行时才确定到底执行函数的哪个版本
  • 运行时根据引用或者指针所绑定对象的实际类型来选择执行虚函数的某一个版本

13.动态类型

  • 对象在运行时的类型
  • 引用所引对象或者指针所指对象的动态类型可能与该引用或指针的静态类型不同
  • 基类的指针或引用可以指向或者引用一个派生类对象。在这样的情况下:
    • 静态类型是基类的引用或者指针
    • 动态类型是派生类的引用或指针

14.继承

  • 使用继承,可以定义相似的类型,并对其相似关系建模
  • 有一个已有的基类定义一个派生类的技术
  • 派生类将继承基类的成员
  • 不同类型
    • 私有继承:基类的公有成员和受保护的成员是派生类的私有成员
    • 公有继承:基类的公有接口是派生类共有接口的组成部分
    • 受保护的继承:基类的公有成员和受保护成员是派生类的受保护成员

15.覆盖

  • 派生类中定义的虚函数如果与基类中定义的同名虚函数有相同的形参列表,则派生类版本将覆盖基类的版本

16.多态

  • 多态是指程序能通过引用或指针的动态类型获取类型特定行为的能力
  1. 纯虚函数
  • 在类的内部声明虚函数时,在分号之前使用=0
  • 一个纯虚函数不需要被定义。
  • 纯虚函数表明该基类成员函数没有实际意义,是作为一个抽象意义存在

18.重构

  • 通常情况下,重构类的方式是将数据成员和函数成员移动到继承体系的高级别节点中,避免代码冗余

19.虚函数

  • 通过引用或指针对虚函数的调用直到运行是才被解析

指针和引用的区别:

  • 非空区别:指针可以不指向任何对象,而引用则必须指向一个对象
  • 合法性区别:使用引用之前不需要测试合法性,而使用指针则需要考虑指针是否为空
  • 可修改区别:可以修改指针指向哪个对象,但是引用指向的对象不能改变
  • 应用区别:
    • 使用指针:
      • 存在不指向任何对象的可能
      • 需要能够在不同时刻指向不同对象
    • 使用引用:总是指向一个对象,不会改变指向时尽量使用引用。

野指针

  • 指向一个已经删除的对象或者未申请,访问受限内存区域的指针
  • 成因:
    • 指针变量未初始化
    • 指针释放后未置空
    • 指针操作超越变量的作用域
  • 规避:
    • 初始化时置为NULL
    • 释放时置为NULL

内联函数和宏

  • 将函数指定为内联函数,通常是将它在每个调用点上 内联地 展开→消除了函数在运行时的开销。
  • 内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。
  • 宏只是一个简单的替换。
  • 内联函数要做参数检查而宏不需要。
  • 内联函数和宏相比没有付出额外代价的情况下更安全。
  • 内联函数一般只用于如下情况:一个函数被不断重复调用;函数只有简单的几行且不包含for/while/switch语句。
  • 类的构造函数和析构函数尽量在类外定义,因为类内定义即为内联函数。

malloc/free和new/delete的区别

  • 前者是标准库函数,后者是运算符,都可以用于申请动态内存和释放内存
  • 对于非内部数据类型的对象而言,前者只能分配内存区域,而无法执行构造函数和析构函数

this指针

  • 本质是一个函数参数, 指向调用当前成员函数对象的常量指针
  • 成员函数开始前构造,成员函数结束后清除
  • 不占用对象的空间

类的静态成员

构造函数、析构函数、拷贝构造函数、拷贝赋值运算符

虚函数

  • 是否可以把每个函数都声明为虚函数
    • 不行,每个虚函数的对象都必须维护一个虚函数表,因此在使用虚函数时会产生额外的系统开销。
    • 虚函数表:一个类的虚函数的地址表

友元

  • 不是类的成员函数但是可以访问类的私有成员
  • 需要在类内声明,在类外定义
  • 可以是函数也可以是一个类

重载、重写

  • 重写(override)是一种面向对象的编程。是指派生类重写基类的虚函数,重写的函数必须有一致的参数表和返回值。
  • 重载(overload)是一种语法规则,指编写一个与已有函数同名但是参数表不同的函数。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容