C++一百道面试题
极客李华
优快云,腾讯云,阿里社区内容合伙人、系统分析师、全网都叫极客李华,交流合作私信+。欢迎技术交流。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++中拷贝构造会出现的情况
简介:本文讲解在c++中拷贝构造会出现的情况有哪些。原创 2024-03-12 22:59:51 · 492 阅读 · 0 评论 -
面试题:delete和free区别
在C++中,delete和free都可以用来释放动态分配的内存。原创 2023-06-10 10:45:52 · 1671 阅读 · 0 评论 -
面试题:malloc和new的区别
在C++中,malloc和new都可以用来动态地分配内存。原创 2023-06-10 10:44:18 · 205 阅读 · 0 评论 -
面试题:内存泄漏以及避免和减少这类错误的方法?
在C++编程中,内存泄漏是一种常见错误,我们可以采用合适的方法进行避免和减少内存泄漏的风险。使用栈上分配对象、使用智能指针以及手动管理内存是一些常用的方法。原创 2023-06-10 10:44:39 · 443 阅读 · 0 评论 -
面试题:左值和右值?
在C++中,左值(left value)和右值(right value)是常用的概念。简单来说,在表达式中可以出现在赋值号“=”左边的对象称为左值,而只能出现在“=”右边的对象则被称为右值。原创 2023-06-10 10:44:24 · 202 阅读 · 0 评论 -
面试题:C++函数调用的过程?
在C++中,函数调用是指通过函数名称和参数来执行函数内部代码的过程。当程序调用一个函数时,CPU首先需要将函数的参数和返回地址等信息保存到栈空间中,并跳转到函数的入口处开始执行函数代码。当函数执行完毕后,程序又会从函数返回的地方继续执行。原创 2023-06-10 10:46:13 · 1039 阅读 · 0 评论 -
面试题:C++ extern作用?
在C++中,关键字extern可以用于声明变量或者函数是在别处定义的。简单来说,关键字extern用来告诉编译器一个名称的实际位置详细信息,以便在其他文件中使用该变量或函数。原创 2023-06-10 10:44:45 · 338 阅读 · 0 评论 -
面试题:计算机内部如何存储负数和浮点数?
在计算机内部,负数和浮点数的存储方式与整数不同,需要使用特殊的编码方式进行存储和处理。原创 2023-06-10 10:44:51 · 789 阅读 · 0 评论 -
面试题:程序编译的过程是怎样的?
程序编译是将源代码转换为可执行文件的过程,包含了预处理、编译、汇编和链接四个主要阶段。原创 2023-06-10 10:45:04 · 239 阅读 · 0 评论 -
面试题:C++堆和栈的区别?
在了解C++中堆和栈的区别之前,我们需要先对它们有所了解:栈(stack):是数据结构中的一种,通常采用“先进后出”的顺序存储数据。在计算机中,栈是由操作系统自动分配和释放的一块连续内存区域。在C++中,局部变量、函数参数和函数返回值等都可以存储在栈空间中。堆(heap):也是计算机内存中的一块数据区域,不同于栈,它的空间大小没有预先限定,也不会自动释放。堆中的内存需要手动申请和释放,通常由程序员通过new和delete等关键字来实现。原创 2023-06-10 10:44:59 · 169 阅读 · 0 评论 -
面试题:数组和指针的区别?
数组:是一种数据类型,用来存储相同类型的若干元素。数组声明时需要指定数组的大小,这个大小必须是一个常量表达式。int arr[5];// 声明一个包含5个int类型元素的数组指针:也是一种数据类型,它可以存储另一个变量的内存地址。指针没有固定大小,不过在声明时需要指定指针所指向的数据类型。int *p;// 声明一个int类型指针。原创 2023-06-10 10:45:27 · 159 阅读 · 0 评论 -
面试题:基类的析构函数为何要声明为虚函数?
在使用继承时,应该将基类的析构函数声明为虚函数,这样可以确保在运行时删除派生类对象时同时调用基类和派生类的析构函数。否则运行时不能确认要调用哪个析构函数,并且可能导致内存泄漏和其他问题。需要注意的是,每个具有虚函数的对象都包含一个指向虚函数表格(vtable)的指针,从而增加了内存开销,但是这种开销相对于可靠性和程序稳定性的提升来说是值得的。原创 2023-06-10 10:45:21 · 211 阅读 · 0 评论 -
面试题:什么是虚函数?
虚函数的声明需要在函数前面加上virtualpublic:public:上面的代码中,Animal类有一个虚函数speak()Dog类继承自Animal并重写了speak()函数。虚函数的定义也需要在函数名前面加上virtual上面的代码中,Animal和Dog类分别实现了speak()函数的默认行为和重写行为。虚函数是 C++ 中实现多态的重要机制之一,它允许在基类中声明函数为虚拟函数,在派生类中进行重写,并且可以通过基类指针或引用调用派生类的成员函数。原创 2023-06-10 10:45:34 · 396 阅读 · 0 评论 -
面试题:C++多态?
多态作为 C++ 的重要特性之一,可以提高程序的灵活性、可移植性和可维护性。它包括静态多态和动态多态两种形式,通过函数重载、运算符重载和虚函数实现。静态多态在编译阶段确定,在调用时进行类型匹配并调用合适的函数;动态多态在运行时确定,在基类指针或引用指向派生类对象时,根据具体类型选择调用相应的虚函数。在使用多态时需要注意虚函数必须是公有的,并且建议使用虚析构函数来避免内存泄漏。原创 2023-06-10 10:45:42 · 112 阅读 · 0 评论 -
面试题:如何避免野指针?
定义指针变量时,必须初始化为 NULL 或 nullptr。动态分配内存后,必须及时手动释放内存。避免使用指针乘法和指针偏移,容易越界成为野指针。使用智能指针自动管理内存资源。原创 2023-06-10 10:47:29 · 1094 阅读 · 0 评论 -
面试题:常量指针和指针常量?
在 C++ 中,常量指针和指针常量分别代表了两种指针变形形式。常量指针是指针指向一个常量值,不允许通过该指针修改所指对象的值;而指针常量是指针本身是一个常量,无法再指向其它对象,但是可以通过指针间接访问所指对象,并修改其值或地址。在实际开发中,需要根据具体问题和应用场景来选择合适的指针类型来解决问题。原创 2023-06-10 10:47:34 · 288 阅读 · 0 评论 -
面试题:C/C++引用和指针的区别?
指针(pointer)是一个变量,存储着另一个变量的内存地址。可以通过解除引用运算符访问该内存地址所存储的值。int x = 10;// 输出 10引用(reference)是一个别名,表示已存在变量的另一个名称。可以直接访问引用变量的值,并且修改引用变量会直接影响到实际变量。int x = 10;int &r = x;// 输出 10指针和引用都是 C/C++ 中非常重要的概念,可以方便地处理对象间的关系和交互。原创 2023-06-10 10:46:00 · 156 阅读 · 0 评论 -
面试题:什么是引用?
引用通过在变量名称前加上来定义,表示该变量的引用。int x = 10;int &y = x;上面的代码中,y是x的引用,两个变量绑定在一起,它们实际上指向同一个内存地址,对其中任何一个变量的修改都会影响另一个变量。引用是 C++ 中的一种特殊变量类型,它本身不占用内存空间,只是已存在变量的别名。引用可以实现许多方便和高效的编程方法,包括以引用作为函数参数传递、引用作为返回值以及调用运算符重载函数等。原创 2023-06-09 21:22:56 · 128 阅读 · 0 评论 -
面试题:讲讲面向对象
面向对象编程是一种强大而灵活的编程方法,它将程序设计建立在类和对象的概念之上,并提供了封装、继承和多态等重要特。原创 2023-06-09 21:19:47 · 170 阅读 · 0 评论 -
面试题:重写和重载的区别
重写和重载都是 C++ 语言中的重要概念。重写是指派生类重新定义了其基类中的虚函数,而重载是指在同一作用域中使用相同的函数名称但参数不同的多个函数。这两个概念必须区分开,正确地使用它们有助于编写更优雅和易于维护的代码。原创 2023-06-09 21:19:58 · 164 阅读 · 0 评论 -
面试题:C++和C的区别是什么?
C++的标准化程度远高于C语言,它有ISO C++标准作为官方指导,并支持很多先进的特性,例如异常处理、RTTI(运行时类型识别)等等。与之不同的,虽然目前已经支持C语言的最新国际标准IEEE 1003.1-2008,但由于历史原因,C语言目前仍无官方标准版本,并需要通过编译器、库等形式进行支持。总之,C和C++都是被广泛应用的编程语言,各自适用于不同的场景下。C++继承了C语言的许多语法结构并引入了更多强大的工具,最适合开发较复杂的企业级应用,具有面向对象编程、STL(标准模板库)等特色功能。原创 2023-06-09 21:18:41 · 228 阅读 · 0 评论
分享