c++容易混淆知识点
C ++令人困惑的知识点
1 函数传递指针和传递引用之间的区别?
 1 GT;指针定义可能未初始化,但引用不可能;
 2  - ;引用只能与一个实体组合,指针可以与多个实体组合;
 3 GT;加法和减法的含义是不同的。指向++的指针指示指针按类型字节向后偏移,而引用为+1,这类似;
 4>评估的大小具有不同的含义。 Sizeof(指针)是指针占用的字节数,4位为32位平台,8位为64位平台(数组名称除外),sizeof(reference)是要使用的实体类型的大小。
5个没有空引用,但是有一个空指针;
6个有多个级别的指针,但没有多级引用;
7个引用比指针更安全,并且不必为空。
注意:也可以引用指针
2 C ++中的 包:
隐藏对象属性和实现细节,水龙头仅提供外部接口和对象进行交互,并结合数据和操作数据方法。
3 必须在构造函数的成员初始化列表中初始化的数据成员:
引用数据成员  const数据成员 类类型成员(该类没有默认构造函数)。
4 面向对象和面向过程的差异?
面向过程的编程方法使用函数(或过程)来描述数据的操作,但将函数与其操作的数据分开。
面向对象的编程方法是封装数据和对象的操作并将它们作为一个整体来处理。
面向过程的编程是以流程为中心的,难以维护。
面向对象的编程是以数据为中心的,数据在功能方面相对稳定,使其更易于维护。
5 静态关键字
Static可以修改局部变量 全局变量和函数。
装饰全局变量和函数时:使用文件范围中的可更改链接属性,该属性仅在当前文件中可用。
6修改局部变量时:
1.在静态区域打开;
生命周期是整个功能的运行时间;
3.默认初始化为0;
4.变量具有记忆功能,即每次保存最后一次呼叫后的值;
5.首次调用函数时创建,只调用一次构造函数。
7修改类的成员变量和函数:
静态成员由所有对象共享,不属于实例
8可以使用类名称:静态成员或对象(.static成员函数)访问类静态水龙头价格成员类静态成员变量必须在类中声明类外定义,而不定义static关键字
9类的静态成员函数没有默认的this指针,因此不能在其中使用非静态成员。
10静态成员与类的普通成员相同。
11它们还具有公共 受保护的  private3访问级别,并且还可以具有返回值,const修饰符和其他参数。
12。分配兼容性规则
子类对象可以直接分配给父对象。
父对象不能直接分配给子对象。
父类的指针或引用可以直接指向子类的对象。
指向子类的指针或引用不能直接指向给定给父类的对象(强可转换)。
13。多态性
概念:多态性指的是不同对象暴露于不同消息时的不同操作。
说明:当基类的指针或引用指向子类的对象时,它只能访问从派生类中的基类继承的成员,而不能访问派生类的新成员。引用虚拟函数可以解决这个问题。
动态绑定条件:为基类中的成员函数提供虚拟函数;调用虚拟函数时,必须由指向基类的指针或引用调用;必须在派生类中重写虚拟函数(同时满足这些要求)。
14。函数重载、同名隐藏、重写(重写/重写)
函数重载:函数名相同,作用域相同,参数列表不同(类型、编号、顺序)
同名隐藏:一个在基类中,一个在派生类中,具有相同的函数名
覆盖/覆盖:一个在基类中,一个在派生类中,所有虚拟函数,相同的函数名,相同的参数列表,相同的函数返回值(协方差除外)
协方差:返回值是指向基类的指针或引用,以及指向派生类的指针或引用。
15。当需要将析构函数设置为虚函数时
在多态场景中,当指向基类的指针或引用指向派生类对象时,由于指向基类的指针而调用基类的析构函数。此时,属于派生类的空间不会释放,从而导致内存泄漏,因此必须在此场景中设置基类的析构函数。作为虚函数,当调用析构函数时,将调用派生类的析构函数。
16。编译器什么时候为我们合成默认的构造函数?
1>有一个具有自己默认构造函数的类A定义。类B不显示定义自己的构造函数但包含类A的对象。在这种情况下,编译器将合成类B的默认构造函数以调用类A的现有构造函数。
2>如果B类和D类处于继承关系中(D类:公共B类),B类包含自己的默认构造函数,D类没有构造函数,编译器将为D类合成默认构造函数,并调用B类已有的默认构造函数。
3>在虚拟继承中,如果派生类不显示自己的构造函数,编译器将为其合成默认的构造函数,并在构造对象时指向对象前四个字节中的虚拟基表指针。
在多态性中,如果基类包含虚函数,而派生类不显示定义的构造函数,编译器将为其合成默认的构造函数,并将指向虚表(虚函数表)的指针存储在对象的前四个字节中。
17。创建虚拟表
基类:根据虚函数的声明顺序,将虚函数的地址一次性放入虚表中,最后一个位置为0。
派生类:首先复制基类的虚拟表
如果派生类重写了基类的某些函数,则派生类将虚拟表中具有相同廉价位置的函数修改为派生类本身的虚拟函数地址。
如果派生类添加了一个与基类不同的虚拟函数,它将被放置在虚拟表的末尾和0的末尾。
18。STL的六个组成部分:
容器、迭代器、算法、适配器、空间配置器、模拟函数(函数对象)
19。程序执行
预处理编译程序集链接执行
预处理:删除注释、宏替换、条件编译,包括头文件、添加行号、文件名等。
编译:词法分析、语法分析、语义分析、优化,然后生成相应的汇编代码
汇编:把汇编代码编程成计算机可以执行的二进制指令。
链接:导出符号表、地址重定向表、位分辨率符号表
执行:执行代码的特定逻辑
20。异常处理
C语言:
1>终止程序
2>返回一个指示
c++容易混淆知识点的更多相关文章
- Java-web易混淆知识点整理
		Java-web易混淆知识点 post和get区别 post: 数据不会显示在地址栏 安全 大小无限制 可以提交二进制文件 get: 数据显示在地址栏 不安全 get方式提交有大小限制(约4kb) 相 ... 
- php易混淆知识点
		一.define(“constant”, “hello world”);和const constant = “hello world”;的区别? (0).使用const使得代码简单易读,const本 ... 
- 关于Android代码混淆知识点
		现在有反编译技术,容易得到源码,所以要混淆代码,加大反编译难度. 只需要在 build.grade 的配置文件中配置就可以了. proguardFiles getDefaultProguardFile ... 
- 【PMP】易混淆知识点
		一.混淆概念 德尔菲技术 德尔菲技术是组织专家达成一致意见的一种方法.项目专家匿名参与其中.组织者使用调查问卷就重要的项目议题征询意见,然后对专家的答卷进行归纳,并把结果反馈给专家做进一步评论.这个过 ... 
- C++易混淆知识点整理
		// 1 /////////////////////////////////////////////////////////////////////// // 常量指针:,指针可修改,变量不可修改(只 ... 
- C语言之数组与指针的易混淆知识点
		一.指针与数组 指针:指针本身也是一个变量,它的内容是指向的内容的地址.指针同样有类型的区分,char 的指针只能指向char型数据,int 指针指向int型数据.但是指针所占内存单元的大小(即其内容 ... 
- C++之易混淆知识点二
		1.数据抽象与封装 数据抽象是一种接口和实现相分离的编程技术,设计者关心的是如何实现这些接口,而使用者仅仅知道这些接口,抽象地考虑这些接口做什么的就可以了,不必去考虑如何实现这一层次. 封装是将低层次 ... 
- CSS易混淆知识点总结与分享-定位与布局
		CSS定位有四种模式:static.relative.absolute.fixed,其它static是默认值,下面分别讲解下各自的特点: static:静态定位,处于动态布局流中,按照页面中的各元素先 ... 
- mysql易混淆知识点
		1,join 和 union join连接属于表之间的水平操作,而union 是表之间的垂直操作.简单讲就是水平操作主要是为了获得列数据,垂直操作是为了获得行数据 cross join ... 
随机推荐
- Kotlin 中类函数
			在kotlin中函数可以在类外部定义也可以在类内部定义,前者即为全局函数,后者,是类成员函数,语法一样 package loaderman.demo class Person { fun demo(n ... 
- shared pointer
			#include <string>#include <fstream>#include <memory>#include <cstdio> class ... 
- Java实现ModbusTCP通信
			一个项目,需要用Java实现使用ModbusTCP和硬件设备通信 资料 代码下载 本文的代码和仿真软件:蓝奏云下载 官网资料 Modbus官网 Modbus协议 Modbus技术资源 MODBUS T ... 
- 一百三十:CMS系统之七牛js和python的SDK使用示例
			1.安装: pip install qiniu 2.编写获取uptoken的接口 @app.route('/uptoken/')def uptoken(): access_key = '' secre ... 
- Hadoop 部署之 Hive (五)
			目录 一.Hive 简介 1.什么是 Hive 2.为什么使用 Hive 3.Hive 的特点 4.Hive 的架构 二.Hive 安装 1.MySQL 安装(datanode01) 2.MySQL ... 
- mac Access denied for user 'root'@'localhost' (using password: YES)
			1:苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务 2: Start it in safe mode 进入终端 输入: cd /usr/local/mysql ... 
- Golang开源项目
			谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也 ... 
- 用例建模 Use Case Modeling
			用例建模 以您的工程实践项目为例,在理解项目需求的基础上进行用例建模,抽取Abstract use case,画出用例图,并确定每一个用例的范围High level use case,对关键用例进一步 ... 
- PJzhang:docker基础知识的2个疗程-one
			猫宁!!! 参考:http://virtual.51cto.com/art/201805/572135.htm https://www.cnblogs.com/rkit/p/9237696.html ... 
- 解决升Win10系统后VMware虚拟机不能联网的问题
			刚升级到Win10系统,打开虚拟机发现不能联网,其实是系统服务项里缺少两个用到的服务,不能联网了,下面教大家解决联网问题. 1.打开VMware虚拟机主页,点击“编辑——虚拟网络编辑器”. 2.点击左 ... 
