牛客day 2

1.关于构造函数:
构造函数必须与类名相同;
2.函数参数使用的空间是在中申请的,malloc和new是在中申请空间的
这里写图片描述
3.引用和多态的关系:
引用可以作为产生多态效果的手段。
4.通过一个对象调用虚函数时,C++系统对该调用采用动态联编
5.关于vector和list的区别:
vector拥有一段连续的内存空间,因此支持随机存取,如果需要干笑的随即存取;
vector::iterator支持“+”“+=” “<”等操作符
list拥有一段不连续的内存空间,如果需要大量的插入和删除,应该使用list
关于运算符[](list不支持)
6.关于malloc和new
new建立的是一个对象,malloc分配的是一块内存;
new初始化对象,调用对象的构造函数,对应的delete调用相应的析构函数,malloc仅仅分配内存,free仅仅回收内存
new和malloc都可用于申请动态内存,new是一个操作符,malloc是一个一个函数
new和malloc都是保留字,不需要头文件支持
7.关于函数模板:
函数模板的实例化由编译器实现(由编译器根据程序员的调用类型实例化为可执行的函数)
8.用class关键字定义的类,其成员默认的访问属性是private
(在C++中没有声明权值,默认为private)
9.二维数组初始化语句:
10.辨别系统调用还是库函数
11.关于虚函数:
这里写图片描述
12.关于C++中的数组:
数组可以动态实现,int n;cin>>n,int *p=new int[n];指针传递也是值传递
13.全局变量是在所有函数外部的源代码内声明的变量
局部变量是在函数内部或者代码块内部声明的变量
14.公有继承与私有继承
15.float类型能表示的最大整数
16.空指针与野指针
空指针与野指针的区别,空指针也就是通常指向为NULL的指针,野指针就是指向一块未知的内存区域(可以是通过malloc或new申请空间后,释放后没有将指针置为空),也有可能定义了一个指针没有初始化,由于内存空间中的值在未赋值之前是随机数,所以也有可能诞生野指针。
17.内联函数
函数代码小 频繁调用
18.关于多态性:
这里写图片描述
19.操作符重载
20.关于派生

建立派生类对象时,函数调用顺序为:基类的构造函数,成员对象的构造函数,派生类的构造函数

21.关于堆和栈

栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将
提示overflow。因此,能从栈获得的空间较小。 堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储
的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小
受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

22.迭代器失效:
23.关于面向对象的描述:
子类重新定义父类虚函数的方法叫做重载
24.STL中的一级容器是容器元素本身是基本类型,非组合类型
例如;vector,deque,list
25.重复多次fclose一个打开过一次的FILE*fp 指针会
导致文件描述符结构中指针指向的内存被重复释放,进而导致一些不可预期的异常
26.调用拷贝构造:

调用拷贝构造函数的3种情况:

1、用一个对象去初始化同一个类的另一个新对象时 2、函数的形参对象,调用函数进行形参和实参结合时
3、函数的返回值是类的对象,函数执行返回调用时 将一个对象赋值给另一个对象,两个对象都存在,调用的是赋值构造函数,不涉及内存的分配。
当被赋值的对象不存在调用的是拷贝构造函数。

27.接口
这里写图片描述
28.重载和重写的区别

重载是指允许存在多个同名函数,而这些函数的参数表不同 重写是指子类重新定义父类虚函数的方法

29.STL中容器支持的运算
30.关于C++中的数组:
数组的名字就是指向该数组第一个元素的指针
长度为n的数组,下标的范围是0-n-1
数组可通过值参数、地址指针、引用参数三种方式传递给函数
31.全局变量是在所有函数外部的源代码内声明的变量,
局部变量是在函数内部或代码块内部声明的变量
32.公有继承:
公有继承是基类中的public成员在派生类中仍是public的
公有继承是基类中的protected成员在派生类中仍是protected的
私有继承是基类中的public成员在派生类中仍是private的
33.有关空指针和未初始化指针:
对0x0这个地址取值是非法的
空指针可以确保不指向任何对象或函数; 而未初始化指针则可能指向任何地方。
空指针与任何对象或函数的指针值都不相等
34.如果函数不要求带返回值,可用 void 来定义函数返回值为空
35.在C++STL中常用的容器和类型,下面哪些支持下标”[]”运算
vector deque map unordered_map
支持随机访问就支持[]
deque 为双向队列,支持快速随机访问,在头尾位置插入或删除速度很快;
这里写图片描述
这里写图片描述
36.对于任意一个类,析构函数的个数最多为1
37.保护成员和私有成员的区别在于把保护成员的访问范围扩展到派生类中。
38.当用delete来释放用new int[]申请的内存空间时,由于其为基本数据类型没有析构函数,所以使用delete与delete []相同,两者都会释放申请的内存空间,若是自定义的数据类型,有析构函数时,用new []申请的空间,必须要用delete []来释放,因为要delete []时会逐一调用对象数组的析构函数,然后释放空间
39.拷贝构造函数使用 1引用作为参数初始化创建中的对象。
40.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为自动(auto)
41.关于C的指针:
32位系统下任何类型指针的长度都是4个字节
指针的数据类型声明的是指针实际指向内容的数据类型
野指针是指向未分配或者已释放的内存地址
42.只能在循环体内和switch语句体内使用break语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值