C++概要简介
从C到C++
新类型 bool类型
新的输入输出方式 con cout
新的内存存储方式 new delete
引用& 用于传参
函数 内敛函数inline 通过代码区膨胀 减少函数的跳转时间 用来代替c语言的宏定义 放在函数的前面
重载 函数名相同参数不一样 参数类型相同 参数个数不一样 在编译的时候相同函数名存储的形式不一
缺省 定义的时候 给参数赋默认值 调用函数 可以不用给缺省的参数赋值 缺省条件从右向左
命名空间
using namespace std;
防止函数冲突
命名空间的三种方法
using namespace std; 最不安全 最简单 可以直接调用命名空间std里面的函数cin>>x;
std::cin>>x;最安全最麻烦 每次调用函数 都需写命名空间std
using std::cin; cin>>x见于上面两个之间 调用什么就在using 命名空间里写什么
域名解析符::
类和对象
结构体 成员变量 点运算符 箭头运算符
类 成员函数 在类中定义 使用this来访问成员 必须用对象调用或者对象指针调用
成员函数在类外定义 需要函数名前面加上类名 使用域名解析符进行定义
访问权限 共有public 可以在外部访问 私有private 受保护 protected 不能在外部访问
类是私有的结构体 结构体是公有的类
构造析构
函数名和类名相同就是构造 可以有多个 可以重载 可以缺省 根据对象的参数来调用哪一个构造
在类名和函数名前没加~代表析构 只有一个 没参数
构造和析构都没有返回值 在一个类的定义的时候 编译器会自动加上构造和析构
const修饰成员 const修饰成员变量 必须初始化形参列表赋值
const修饰成员函数 函数后面加航const 防止使用this执政来修改成员的值
拷贝构造
拷贝构造是一种特殊的构造
对象在定义的时候 可以调用拷贝构造 也可以调用其他构造 如果参数是同类型的对象 那么调用拷贝构造 拷贝构造的 形参必须使用引用(规定)
参数是对同一类型对象的引用
拷贝的两种方案 深拷贝和浅拷贝
深拷贝每个指针单独指向一块内存 对于对内存 每次开辟新的内存 存放内容 不让两个指针指向同一块区域
static修饰的成员 变量不属于某个对象 属于全部的对象 整个类和这个给类的所有对象 全部共享一份static变量 必须在类外初始化
static修饰成员函数 成员函数前没加上static 里面没有this指针无法访问普通成员
运算符重载
友元 friend 可以访问对象的私有成员 不属于类 因此没有this指针
可以访问该类对象的成员 包括私有
重载运算符操作数是几个 就有几个参数
friend返回值类型 operator运算符(参数a,参数b)
运算符重载 想要使用什么运算符 就堆什么运算符进行重载
operator+运算符 函数名 重载方式
成员函数的调用方式 双目运算符 只需要一个额外的参数 另外一个参数是this
A A::operator+(const A&b); 引用提高效率 const防止修改
继承
继承是在原有类的基础上 创造一个新的类 子类会继承父类所有的成员变量 父类有的子类都有
原有类称为父类或者基类 新类称为子类或者派生类父类派生子类 子类继承父类
权限控制 继承之后堆一些访问权限做了修改 父类的私有成员在子类中不可访问
子类在父类的基础上加了新的成员
子类可以定义与父类同名的变量或者函数 父类得到隐藏 优先调用子类的新成员
父类的构造和析构不能用于子类 子类需要的时候需要重写父类的构造和析构 所有子类的构造和析构都要调用父类的构造
子类先调用父类的构造 然后再调用子类的构造 子类先调用自己的析构然后再调用父类的析构
多态
一种形式多种状态
实现方式 虚函数 父类指针/引用可以指向子类对象 优先调用父类函数
子类重写父类函数 用父类指针可以调用子类重写的函数
动态联编 调用的时候才知道调用那个函数 使用函数指针根据指针找到函数 比较灵活速度不快
静态联编 再运行前就知道调用什么函数 速度比较快但 不灵活
虚表 拥有虚函数的对象中会有虚表指针 这个指针指向虚函数表(表中存放虚函数地址)
子类重写父类虚函数是区修改虚表中的地址
文件操作
文件分为二进制文件和文本文件
文本文件:txt cpp直接能打开的文件 字符流
二进制文件 需要特定的软件才能打开 字节流
c语言通过文件执政来操作 FILE *fp 所有的操作围绕文件指针来进行
文件流 ifstream 只写文件 ofstream 只读文件
fstream 打开关闭open close is_open 读写文件 get/put read/write getline 输入输出运算符
操作seekp 移动文件的位置 tellp 得到文件指针的偏移量
异常处理
计算的时候 遇到除法 除数是0的情况 文件打开失败 申请对内存的时候失败
运行的时候遇到非代码错误的问题 遇到之后 提交给调用方处理
处理方式 try 测试代码 catch 捕获异常 throw 抛出异常
处理不了给上级 如果最终无人处理或者处理不了 结束程序
C11标准
变量初始化 int a=0,a(0),a{0};
nullptr 相当于c中的NULL 有变量的类型更加的安全
auto 自适应类型 自动类型 根据你赋的值来确定变量的类型
decltype 一个括号时用一个变量定义同类型的变量 两个括号时该类型的引用
关于for的一个用法 for(auto i:arr);遍历arr数组中所有的元素
类型别名 C语言typedef typedef int INT typedef 类型 别名
C++ using 别名=类型名
类中成员 一般是在构造中赋值 C11可以直接在类中赋值
A()=default;自动生成默认构造
委托 在构造中调用自己的其他构造
final 终极类或者终极函数 不能使用虚函数 不能派生子类
模板
template<class T> 写和类型无关的代码 调用的时候传入类型
函数模板 函数(参数) 隐性调用 通过参数确定T类型
函数<类型>(参数) 显示调用 直接传入T的类型
类模板 类名<类型> 对象名
C++概要简介的更多相关文章
- 【RS】AutoRec: Autoencoders Meet Collaborative Filtering - AutoRec:当自编码器遇上协同过滤
[论文标题]AutoRec: Autoencoders Meet Collaborative Filtering (WWW'15) [论文作者]Suvash Sedhain †∗ , Aditya K ...
- 限制q-error,防止产生次优计划
原文:<Preventing bad plans by bounding the impact of cardinality estimation errors> 摘要 文章定义了一个衡量 ...
- [旧][Android] ButterKnife 浅析
备注 原发表于2016.05.08,资料已过时,仅作备份,谨慎参考 前言 自上星期写 Retrofit 写吐之后 ... 我问大队长能不能换个其他什么东西写,大队长就说了个单词 ButterKnife ...
- 数据库之一、数据库简介及SQL概要
1.数据库简介: 数据库(Database,DB)是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合.简单来讲就是可以放大量数据的地方.管理数据库的计算机系统称为数据库管理系统(Dat ...
- word2vec (一) 简介与训练过程概要
摘自:http://blog.csdn.net/thriving_fcl/article/details/51404655 词的向量化与word2vec简介 word2vec最初是Tomas Miko ...
- TypeScript的概要和简介
安装 Typescript的基本介绍可以自行百度 centos虚拟机中可以完整的体验, virtualbox安装开发版本,选择开发工具项,否则增强功能无法安装[提示kernel 头文件缺失,yum安装 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
- 前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定
一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...
- Mosquitto搭建Android推送服务(一)MQTT简介
总体概要: MQTT系列文章分为4部分 1.MQTT简介 2.mosquitto服务器搭建 3.编写Mosquitto的可视化工具 4.使用Mosquitto完成Android推送服务 文章钢要: 对 ...
随机推荐
- 数论 CF27E Number With The Given Amount Of Divisors
求因子数一定的最小数(反素数) #include<iostream> #include<string> #include<cmath> #include<cs ...
- tkinter中控件menu的两种组织方法
tkinter中,菜单控件组织方法有两种,使用中常出现混淆,为明晰各个正确用法,特整理撰写此博文.菜单控件的组织实际上是通过一个“母菜单”和“子菜单”构成,“母菜单”一方面与master连接(即与依附 ...
- python 导入数据包的几种方法
1.直接导入整个数据包:improt 数据包 参考代码: # -*- coding:utf-8 -*- # 导入random数据包 import random # 引用random数据包中的randi ...
- input防抖动
input及时搜索,输入一个字符就去处理请求数据.但是还没有输入完就开始频繁请求,进行处理 <body> <input id="put"/> </bo ...
- python outline
1.列表/数组/numpy/Pandas Python list 初始化技巧 (2018-12-27 11:54) python3 sort list (2019-05-23 14:52) P ...
- TypeScript——枚举类型
enum类型是对JavaScript标准数据类型的一个补充. 在运行环境下编译成对象, 可用属性名索引, 也可用属性值索引.而其实现原理为:反向映射 (如下例) 数字枚举 enum Role { ...
- 全面掌握Nginx配置+快速搭建高可用架构 一 random_index_module 随机主页
修改default.conf 保存重载Nginx,完成配置 自动随机选择主页 string要替换的内容,replacement表示替换后的内容 示例 效果,只替换了第一个 如果要替换所有的,需要用到s ...
- hash表系列(转)
http://www.cnblogs.com/mumuxinfei/p/4441826.html 前言: 我以前在百度的mentor, 在面试时特喜欢考察哈希表. 那时的我满是疑惑和不解, 觉得这东西 ...
- ETL优化
ETL优化 Extract.Transform.Load,对异构数据源进行数据处理. 设立基线标准,根据硬盘.网络传输速度,多测测量得到数据量(m)/时间(s)的比值,找线性关系.建立基线作为调试和优 ...
- Codeforces 1291A - Even But Not Even
题目大意: 给定一个字符串数字(很大) 问能不能删除一些数字(或者不删除) 使得剩余的数字各位数相加是偶数,但是这整个数字是个奇数 解题思路: 统计字符串中单个数字奇数的个数 分情况 个数为0或者1时 ...