142-C++重要知识点

142-C++重要知识点,第1张

142-C++重要知识点

1.函数参数默认值
1.函数参数的默认值必须从右向左依次赋值,不可以跳过
2.函数参数的默认值生效范围只在当前的cpp文件,为什么?
答案:函数参数默认值,是在编译期通过生成传入指令进行传入的,生成该指令的时候就必须能够看到这个默认值,编译期是针对单文件进行的,看不到其他文件,所以函数参数默认值就只能在当前文件生效
3.在同一作用域中,一个函数参数只能给一次默认值
4.默认值参数是在编译期传递的
5.函数的参数默认值只能使用编译期可以取值的明确常量

2.内联函数
递归函数不可能被处理成内联函数
内联函数:当函数被调用的时候,在编译时期会在调用点将函数展开,注意展开的是指令,而不是代码
内联函数没有栈帧的开辟和回退,会节省时间和空间
inline是对编译期的建议,建议将该函数处理为内联,但是不一定就处理为内联,只是建议
inline函数生成的是local符号
内联函数的作用域只在本文件,必须在当前文件实现该函数,为什么?
答案:内联函数在debug版本生成local符号,在release版本不生成符号
内联函数会在编译期展开,必须在编译期看到函数体,所以只能在当前文件实现
inline关键字只是建议处理为内联,而不一定是真的处理为内联

3.(面试必问)什么是静多态?举例说明
答案:编译期决定的多态—也被称为早绑定,举例就是函数重载(确定调用的是哪一个函数)和模板(生成一个什么类型的类)

4.SQL是Structured Query Language(结构化查询语言)

5.什么是重载?
答案:函数名相同,参数列表不同,作用域相同

6.C语言为什么不能进行函数重载,C++为什么可以?
答案:C语言生成函数符号依赖的是函数名,C++生成函数符号依赖的是函数名+参数列表

7.类型默认转换顺序:
double <— float
unsigned
long
int <— char/short
通过include来记忆,从int向double转换

8.new、delete、malloc、free
new—开辟空间 + 调用构造
malloc—开辟空间
delete—调用析构+释放空间
free—释放空间

9.引用为什么一经初始化就无法改变引用的指向?引用为什么必须初始化?

答案:引用底层其实是指针,在编译期使用到引用的地方会自动替换为指针的解引用

引用一旦定义之后,就无法在访问到引用底层的指针

10.能传指针的地方就能传引用

11.const定义的量为什么必须初始化?
答案:const定义的常量会在编译期将使用到该常量的地方自动替换为该常量的值,如果不进行初始化,后期就没有办法再给常量进行赋值

12.如何判断const修饰的是类型和修饰的内容?const修饰的哪部分不能改变?const指针之间赋值原则是什么?

答案:1.修饰的类型是离const最近的第一个成型的类型,类型以外的就是修饰的内容
2.const修饰的内容具有常属性,不能改变
3.不能将带有常属性的量的地址给到非常量的指针

13.this指针是什么?
答案:this指针就是指向当前对象的指针

14.会自动添加在哪几个地方
答案:①普通成员方法参数列表第一个参数
②调用普通成员方法的实参第一个
③普通成员方法函数体内使用到普通成员的前面加上this->

15.构造函数特征
1.构造对象的时候会自动调用构造函数
2.如果没有自己实现构造函数,编译器会自动为我们生成一个构造函数,这个构造函数什么也不做
3.如果自己实现了构造函数,编译器就不自动生成了
4.当构造函数的时候,可以传递参数,相当于进行了一个初始化 *** 作
5.默认构造函数就是没有加额外参数的构造函数
6.构造函数没有返回值但是也是函数,构造函数没有返回值
7.构造函数可以重载
8.构造函数的函数名和类名相同

16.析构函数的特征
1.会在对象生存周期满的时候,自动调用析构函数
2.如果我们自己没有实现析构函数,编译器会自动生成一个析构函数,这个析构函数什么也不做
3.如果我们自己实现了析构函数,编译器就不自动生成析构函数了
4.析构函数相当于一个销毁函数
5.析构函数是在什么时候调用的?被谁调用的?
在生命周期结束的时候被调用的,也就是在这个对象被摧毁的时候被调用的
6.析构函数不需要其他的额外参数
7.析构函数不能重载,因为没有参数(this指针还是有的),也就不会有重载

17.拷贝构造函数的注意事项
1.防止浅拷贝 + 必须传引用

18.拷贝构造为什么必须传引用?
答案:防止死递归,原因是重复使用同类型的对象构造新对象

19.等号运算符注意事项?
防止自赋值,防止内存泄漏,防止浅拷贝

20.初始化列表的作用?
答案:进行成员变量的初始化

21.目前知道的哪些东西必须放在初始化列表?
答案:引用、常量、没有默认构造函数的成员对象

21.常方法 格式?作用?注意事项
格式:const加在参数列表后面
作用:const修饰this指针
注意事项:常方法内只能调用常方法

22.static成员变量 + 成员方法
1.静态成员变量必须在类外进行初始化
2.静态成员访问不依赖于this指针,可以直接使用作用域进行访问
3.静态的成员方法参数没有this指针,方法内只能使用静态成员

23.单例模式
特征:
严格限制只能产生一个对象
在项目中任何地方都能获取到该对象

写法:
将唯一构造函数写到私有
在公有的权限下提供静态接口获取对象
控制对象只会被构造一次

24.类与类之间的关系
组合:一个类是另一个类的一部分,头和眼睛的关系
代理:一个类的功能实现依赖于另一个类的功能,static 和 list 的关系

注意:友元不属于类与类的关系

25.运算符重载

26.模板
类模板
template
class A(){}

函数模板
template
void fun(T a,T b){}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5692048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存