继承:继承就是新类从已有类那里得到已有的特性。 类的派生指的是从已有类产生新类的过程。原有的类成为基类或父类,产生的新类称为派生类或子类。

多态:将基类类型的指针或者引用指向派生类型的对象。多态通过虚函数机制实现。简单概括为“一个接口,多种方法”(接口重用),即用的是同一个接口,但是效果各不相同。

重写(覆盖):是指派生类的函数屏蔽了与其同名的基类函数,注意只要同名函数,不管参数列表是否相同,基类函数都会被隐藏。

重载:是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。

虚函数(动态调用) 、内联函数(静态编译)不能同时是

https://blog.csdn.net/u011426247/article/details/79767277

extern C

头文件中的ifndef/define/endif作用:预编译文件保护符,防止文件被多次包含,多次定义。

const和define的区别:const有数据类型,宏常量没有。编译器可对前者进行类型安全检查,而后者只是字符替换。

sizeof:只计算在栈中分配的内存大小。

指针和引用的区别 :引用是变量的别名,内部实现是只读指针

数组和指针的区别

空指针和悬垂指针的区别:

  悬垂指针:指向曾经存在的对象,但该对象已经不再存在了,此类指针称为垂悬指针

  空指针:被赋值为NULL的指针

  哑指针:只是一个指向,除此以外不会有其他任何动作,所有的细节必须程序员来处理,比如指针初始化,释放等等

  野指针:是指向“垃圾”内存(不可用内存)的指针

智能指针:实现一种垃圾回收机制。为了满足管理类中指针成员的需要;使用引用计数的方式实现

面向对象技术的基本概念:类、对象、继承

面向对象技术的基本特征:封装、继承、多态

C++空类默认的成员函数:构造函数、拷贝构造函数、析构函数、赋值操作符重载、取地址操作符重载、const修饰的取地址操作符重载

static变量:

  静态全局变量只初始化一次,防止在其他文件单元中被引用。

  静态数据成员在全局数据区分配空间(不在栈中)。

  静态函数只能在声明它的文件中可见,不能被其他文件使用。

  静态成员变量可以在一个类的实例之间共享。

  静态成员函数没有this指针的开销,只能访问静态的函数和变量。

构造函数可以是内联函数

C++编译程序的内存结构:

  栈区:由编译器自动分配释放,存放函数参数值、局部变量等

  堆区:一般由程序员分配释放。new/malloc、delete/free

  静态数据区:局变量和静态变量存储是放在一块,初始化全局变量和静态变量在一块区域, 未初始化全局变量和未初始化静态变量在相邻另一块区域。

  文字常量区:常量字符串

  代码区:存放函数体的二进制代码

字符数组和字符串的区别:字符串会在末尾自动添加空字符

虚函数表在编译器建立;而对象的隐藏成员(虚函数指针)在运行期构造函数被调用时建立的

https://www.cnblogs.com/yjd_hycf_space/p/7495640.html

const的用途:定义常量;修饰函数的参数和返回值;被修饰的类的成员函数不修改非const成员变量的值

虚析构函数:通过基类的指针删除派生类的对象。否则 不是虚的会引起内存泄漏

内存泄漏

子类和父类的构造函数、析构函数:

  析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了。

  定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数。

引用:变量的别名;本身不是一种数据结构;不占用内存;不能建立数组的引用;不存在纸箱空值的指针。

常引用

全局对象的构造函数:在main函数之前执行

https://www.cnblogs.com/LUO77/p/5771237.html

不可以同时用const和static修饰成员函数:C++编译器在实现const的成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个成员为static的时候,该函数是没有this指针的。也就是说此时const的用法和static是冲突的。

const与指针:

  const char *p 表示 指向的内容不能改变。

  char * const p,就是将P声明为常指针,它的地址不能改变,是固定的,但是它的内容可以改变。

纯虚函数:纯虚函数不能再在基类中实现,编译器要求在派生类中必须予以重写以实现多态性。同时含有纯虚函数的类称为抽象类,它不能生成对象。

https://blog.csdn.net/u014796694/article/details/81210868

C++源文件从文本到可执行文件的过程:预处理->编译->汇编->链接

debug和release的区别:

  debug:通常称为调试版本,包含着调试信息,便于程序员调试

  release:称为发布版本,它往往是经过各种优化,使得程序在代码大小和运行速度是最优的,方便用户使用。

程序崩溃的几种原因:读取未赋值的变量;函数栈溢出;数组越界访问;指针的目标对象不可用

C++编程优化

参考:

https://www.cnblogs.com/Y1Focus/p/6707121.html

https://blog.csdn.net/v_july_v/article/details/7382693( 海量数据处理方法)

C++基础 (杂七杂八的汇总 )的更多相关文章

  1. laravel获取当前的url以及当前的基础域名方法汇总

    原文地址:https://phpartisan.cn/news/58.html 来源于:laravel获取当前的url以及当前的基础域名方法汇总 - Laravel学习网 laravel中我们常常需要 ...

  2. Java基础-线程安全问题汇总

    Java基础-线程安全问题汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存泄漏和内存溢出(out of memory)的区别 1>.什么是内存溢出 答:内存溢出指 ...

  3. mysql基础知识语法汇总整理(二)

    mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) in ...

  4. mysql基础知识语法汇总整理(一)

    mysql基础知识语法汇总整理(二)   连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...

  5. 利用Python进行数据分析 基础系列随笔汇总

    一共 15 篇随笔,主要是为了记录数据分析过程中的一些小 demo,分享给其他需要的网友,更为了方便以后自己查看,15 篇随笔,每篇内容基本都是以一句说明加一段代码的方式, 保持简单小巧,看起来也清晰 ...

  6. 10-26C#基础回顾、汇总(函数重点)

    第一部分==进制转换 重点记忆: 1.任意进制转十进制 按权展开法 p代表进制数,a/b/c...m分别代表进制数p从右往左第1位--第(n-1)位的数 公式:a*p0+b*p1+c*p2+..... ...

  7. Anliven - 基础知识梳理汇总 - 软件测试

    基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...

  8. JAVA面向对象-----面向对象(基础预备知识汇总)

    终于整理好了面向对象基础预备知识,但是有点多,所以你们懂的,贴图,较长的代码我还是会排版出来的,我不想把时间浪费在排版上在word里排版一次已经很浪费时间了,所以请谅解. public class C ...

  9. Linux基础培训知识点汇总

    一.Linux简介1.Linux操作系统诞生于1991年10月5日,由林纳斯·托瓦兹在comp.os.minix新闻组上发布消息,正式向外宣布Linux内核的诞生.2.Linux同时也衍生了很多版本( ...

随机推荐

  1. 2013.9.3 - OpenNER第十一天

    下午接受了天猫某高管的交叉面试,在图书馆电面的,感觉面的不怎么好,他先问了我飞天的情况,还有我做了什么,他感觉和我聊不到一起去,我感觉应该是下午在地下铁喝的那杯咖啡让我慌了神,后来他又问了大数组抽取最 ...

  2. httprunner学习1-环境与登录接口案例

    前言 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试. 具有以下优点: 继承 Requests 的全部特性,轻松实 ...

  3. Python基础初始之二

    1.格式化的输出 当你遇到这样的需要:字符串中想让某些位置变成动态可传入的,首先考虑用格式化输出 1.格式化输出:% 2. 格式化输出:format 3. 格式化输出:f 2.运算符 3.编码 待续

  4. django 进行语言的国际化及在后台进行中英文切换

    项目的部署地为: 中国大陆与美国东海岸, 两个地区的服务器数据不进行同步, 中国地区的服务器页面展示中文, 美国地区的服务器页面展示成英文, 项目后台使用python编程语言进行开发, 并结合djan ...

  5. linux 读取文件

    linux读取文件是经常要用到的操作,以下示例(说明看注释): #读取文件snlist.txt中的每一行内容赋给sn变量 while read sn do echo ">>> ...

  6. noip初赛试题

    链接: https://pan.baidu.com/s/1yoOMIUqMRBnBUPprC3o6HQ&shfl=shareset 提取码: m8ns 复制这段内容后打开百度网盘手机App,操 ...

  7. 决策树——C4.5

    -- coding: utf-8 -- """ Created on Thu Aug 2 17:09:34 2018 决策树ID3,C4.5的实现 @author: we ...

  8. 指数基金介绍专栏(4):上证50AH优选指数

    作者:牛大 | 公众号:定投五分钟 大家好,我是牛大.每天五分钟,投资你自己:坚持基金定投,终会财富自由! 想必大家会有疑问,什么是上证50AH优选指数?今天老师给大家答疑解惑,详细介绍一下上证50A ...

  9. 15-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,调节LED亮度,上位机程序编写

    https://www.cnblogs.com/yangfengwu/p/11104167.html 先说一下整体思路哈.. 咱滑动的时候 会进入这个,然后咱呢不直接从这个里面写发送 因为这样的话太快 ...

  10. 去除空格JS

    $(document).ready(function (){//通用方法去输入框前后空格 $("form").on("change",function () { ...