【C/C++面试常见问题(二)】教程文章相关的互联网学习教程文章

[c++面试准备]--vector对象是如何增长的【代码】

参考资料:cpp primer 5th背景:为了支持快速的访问,vector/string将元素连续存储--每个元素都是紧挨着前一个元素存储。如果我们向vector/string中添加新的元素,会发生什么:由于连续存放的缘故,当没有多余的空间来容纳新的元素的时候,容器必须分配新的空间来保存已有的元素和新元素,将已有元素从旧位置移动到新空间中,然后添加新的元素,释放旧的空间。 vector不会对新添加的每一个元素都做上述操作,效率太慢。所以vector会...

关于C++的面试题

一、谈一谈static 这个问题不算太难,但是要完整的把static的作用说完还是有一定难度的。A、首先解释static在C语言中的作用,这些作用在C++中被完全继承了。(1)所有使用static修饰过的变量如果未被显式初始化,则被存储在bss段,BSS段在二进制程序中是没有实际存储的,只有在程序运行时才会为BSS段分配内存同时进行默认初始化 ,在C语言中也就是赋值为0 。如果显示初始化了,那么就存储在data段。而不管是bss段还是data段,...

c++面试常见300问

1.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。extern "C"是连接申明(linkage declaration),被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。作为一种面向对象的...

【面试】C++类中的相关函数【构造,拷贝构造,析构,友元】

构造函数:值的初始化,可带参数,无返回值,可重载,可存在多个析构函数:释放对象内存空间,无参数,无返回值,不可重载,只能存在一个拷贝构造函数:拷贝对象,其形参必须是引用1.空类会默认添加哪些东西?怎么写?空类的大小是多少?为什么?1)Empty():默认构造函数2)Empty(const Empty&):拷贝构造函数3)~Empty():析构函数4)Empty& operate=(const Empty&):赋值运算符空类的大小为1,因为C++要求类的每个实例必须具有独一...

c++常见面试题30道

1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不...

面试复习(C++)之基数排序【代码】

#include <iostream>usingnamespace std;int maxbit(int *a,int n) {int d=1;//一位int p=10;//十进制for(int i=0;i<n;i++){while(a[i]>=p){p*=10;++d;}}return d; }void Radixsort(int *a,int n) {int radix=1;int k;int d=maxbit(a,n);int *tmp=newint[n];//桶int *count=newint[10];//计数器for(int i=1;i<=d;i++){for(int j=0;j<10;j++){count[j]=0;//计数器每次都清零 }for(int j=0;j<n;j++){k=(a[j]/radix)%10;//取余...

c++ 面试基本知识点整理(1)【代码】

目录2. 什么是虚拟构造函数以及析构造函数2.1 虚函数的实质2.2 基类的析构函数必须用虚函数2.3 以下函数不能使用虚函数1)普通函数2)友元函数3)静态成员函数4)构造函数,拷贝函数5)内联函数;3. 如何定义一个抽象类2.引入原因3.抽象类4.抽象类的规定6.虚函数和纯虚函数有以下所示方面的区别7.抽象类与接口得区别4. 拷贝构造函数的定义4.1 拷贝构造函数的使用4.2 使用场景4.3 编译原理4.4 浅拷贝与深拷贝5. 重载与重写的区别ove...

C++经典面试题(一)

最近看一些面试题,觉得如果自己被问到了,并不能很利落的回答出来。一是从来没有这个意识,二是没有认真的梳理下。下面对这些题做出分析,哈!个人能力有限,其中难免有疏漏,欢迎大家补充咯!1.C和C++中struct有什么区别?1>C++中的struct类似于class,有变量,有构造函数、虚函数等,有继承,多态等类的特征;2>C中的struct只有变量,不能有函数,但是可以有函数指针2.C++中的struct和class有什么区别?在C++中,两者区别不大,...

笔试面试那件小事(常见的C++基础题)

1->简述变量声明和定义的区别为变量分配地址和存储空间称为定义,不分配地址称为声明。一个变量可以在多个地方声明,但只能在一个地方定义。加入extern修饰的变量的声明,说明此变量将在文件以外或者文件的最后面定义。 2->简述sizeof和strlen的区别主要区别如下: sizeof是一个操作符,strlen是库函数;sizeof的参数可以是数据的类型,也可以是变量。而strlen的参数只能是以‘\0’结尾的字符串参数。 ...

C/C++面试问题分类大汇总 ZZ 【C++】

http://www.mianwww.com/html/2014/05/21208.html 指针和引用的区别指针指向一块内存,它的内容是指向内存的地址;引用是某内存的别名引用使用是无需解引用,指针需解引用引用不能为空,指针可以为空引用在定义是被初始化一次,之后不可变;指针可变程序为指针变量分配内存区域,而引用不需要分配内存区域memcpy和strcpy的区别memcpy用来内存拷贝的,它有指定的拷贝数据长度,他可以拷贝任何数据类型的对象Strcpy它只能去拷贝字符串...

C/C++的指针经典面试题

a) 一个整型数(An integer) b)一个指向整型数的指针( A pointer to an integer) c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)r d)一个有10个整型数的数组( An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers) f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers) g)...

面试题62:圆圈中最后剩下的数字(C++)【代码】【图】

题目地址:https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/题目描述0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。题目示例示例 1:输入: n = 5, m = 3 输出: 3 示例 2:输入: n = ...

C++【面试题】:类实现万年历(日期计算器),(含构造函数、拷贝构造、运算符重载、析构函数)【代码】

#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<stdlib.h> using namespace std;class Date { public: Date(int year=0, int month=0, int day=0) :_year(year) , _month(month) , _day(day) { cout << "构造函数" << endl; } Date( const Date& d) { cout << "拷贝构造函数" << endl; _year = d._year; _month = d._month; _day = d._d...

[C++]一个面试官问了无数次的问题--什么是“多态”【代码】

C++ Prime 里有原话(中文):这种“用基类的指针或引用操纵多个类型”的能力被称为多态(polymorphism)。例如有基类Camera, 他的子类有各种Camera,然后已知函数:void lookat(const Camera *pcamera);在实现lookat()时,只要对基类Camera的接口进行编程,而与 指针 pcamera 指向的具体是哪一个类无关(Camera有很多子类)。 每个单独的lookat()调用都会被传入一个Camera子类对象地址。编译器会自动地把他们转换成适当的基类指针。...

面试题42: 连续子数组的最大和(C++)【代码】

题目地址:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/题目描述输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)题目示例示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解题思路动态规划:我们假设动态规划列表为f,f(i)代表以元素nums[i]为结尾的连续子数组...