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++容易混淆知识点的更多相关文章

  1. Java-web易混淆知识点整理

    Java-web易混淆知识点 post和get区别 post: 数据不会显示在地址栏 安全 大小无限制 可以提交二进制文件 get: 数据显示在地址栏 不安全 get方式提交有大小限制(约4kb) 相 ...

  2. php易混淆知识点

    一.define(“constant”,  “hello world”);和const constant = “hello world”;的区别? (0).使用const使得代码简单易读,const本 ...

  3. 关于Android代码混淆知识点

    现在有反编译技术,容易得到源码,所以要混淆代码,加大反编译难度. 只需要在 build.grade 的配置文件中配置就可以了. proguardFiles getDefaultProguardFile ...

  4. 【PMP】易混淆知识点

    一.混淆概念 德尔菲技术 德尔菲技术是组织专家达成一致意见的一种方法.项目专家匿名参与其中.组织者使用调查问卷就重要的项目议题征询意见,然后对专家的答卷进行归纳,并把结果反馈给专家做进一步评论.这个过 ...

  5. C++易混淆知识点整理

    // 1 /////////////////////////////////////////////////////////////////////// // 常量指针:,指针可修改,变量不可修改(只 ...

  6. C语言之数组与指针的易混淆知识点

    一.指针与数组 指针:指针本身也是一个变量,它的内容是指向的内容的地址.指针同样有类型的区分,char 的指针只能指向char型数据,int 指针指向int型数据.但是指针所占内存单元的大小(即其内容 ...

  7. C++之易混淆知识点二

    1.数据抽象与封装 数据抽象是一种接口和实现相分离的编程技术,设计者关心的是如何实现这些接口,而使用者仅仅知道这些接口,抽象地考虑这些接口做什么的就可以了,不必去考虑如何实现这一层次. 封装是将低层次 ...

  8. CSS易混淆知识点总结与分享-定位与布局

    CSS定位有四种模式:static.relative.absolute.fixed,其它static是默认值,下面分别讲解下各自的特点: static:静态定位,处于动态布局流中,按照页面中的各元素先 ...

  9. mysql易混淆知识点

    1,join 和 union join连接属于表之间的水平操作,而union 是表之间的垂直操作.简单讲就是水平操作主要是为了获得列数据,垂直操作是为了获得行数据 cross  join        ...

随机推荐

  1. ubuntu 安装百度云客户端

    下载地址:http://pan.baidu.com/download 如果没有安装alien,安装 luo@luo-ThinkPad-W540:~$sudo apt-get install alien ...

  2. (翻译) How variables are allocated memory in Javascript? | scope chain | lexicial scope

    总结: 阅读下面文章需要15分钟 提问者的问题是JavaScript中内存是怎么分配的,在介绍的过程作者涉及计到了JS中 Scope Chain和调用函数call生成lexicial environm ...

  3. leetcode 四数之和

    这里我们可以考虑将 n 数之和降低为一个数加上 n-1 数之和的问题.依次降低 ,最低是二数之和的问题 ,二数之和问题容易解决.主要在于从 n 到 n-1 的过程需要理解 :下列代码中前几个 if 是 ...

  4. (转)svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrupted”

    今天碰到了个郁闷的问题,svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrup ...

  5. 上传文件到CDN,上传后文件错误。

    开始用xfp上传,发现文件错误.后来改用filezilla,上传后文件正确.害苦了我啊

  6. 关于使用Arduino做开发的理解

    转载自arduino中文社区 https://www.arduino.cn/thread-5414-1-1.html 见到很多人对Arduino的开发方法 .应用场景有误解,特别开个帖子说明下. 误解 ...

  7. 【FFMEPG】windows下编译ffmpeg2.5——使用VS2013,ARMLINUX,ANDORID编译ffmpeg

    原文:http://blog.csdn.net/finewind/article/details/42784557 一.准备: 1. 本机环境: win7 64bit: 2. 安装MinGW到C:\M ...

  8. 最新 东方明珠java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.东方明珠等10家互联网公司的校招Offer,因为某些自身原因最终选择了东方明珠.6.7月主要是做系统复习.项目复盘.Leet ...

  9. spring中的bean的生命周期

    bean的生命周期:bean的创建 —— 初始化 ——销毁的过程 容器管理bean的生命周期,我们可以自定义初始化和销毁方法,容器在bean进行到当前生命周期就会调用我们的方法 在xml配置文件中是在 ...

  10. when i import skimage,it occurred --"cannot import name '_validate_lengths'"

    how to sovle this prolem? 1)with the administrator user to run cmd 2)imput and run : pip install --u ...