《C++总结3》
派生类
Class student1:public student //表示公用继承,默认为私有的
{ public :
……
……
}
继承的时候一定是全部继承来,但是可以自己设定访问属性,或是覆盖父成员
一般是抽象基类 构造函数和析构函数不能继承
基类不能访问派生类
继承方式就是对父成员的属性改造,私有>保护>公有(把儿子也当外人)
不管怎么样,父私有的,子都不能继承和调用
多级派生 常用的是公用继承
派生类构造函数:
Student1(int n,string nam,char s,int a):student(n,nam,s)
对象中的对象(子对象)
含有子对象的派生类的构造函数:
Student1(int n,string nam,int n1):student(n,nam),monitor(n1,nam1)
{
……//可以为空
}
多层派生的构造函数:
Student2(int n,string nam,int a,int s):student1(n,nam,a)
父和子的构造函数都是可以默认的
多重继承:
Class D:public A,private B,protected C
{
……
}
多重继承构造函数:
Graduate(string nam,int a,char s,string t,float sco,float w):
teacher(nam,a,t),student(nam,s,sco),wage(w)
{
……
}
多重继承会有二义性,引用的时候要指明
虚基类 合开合的思想,第一个合就是虚基类 虚继承
虚基类:
Class A
{ A(int){ }
……
};
Class B:virtual public A
{
B(int n):A(n)
{
……
}
……
……
};
Class C:virtual public A
{
C(int n):A(n)
{
……
}
……
……
};
Class D:public B,publicC
{D(int n):A(n),B(n),C(n) { }
……
};
*****************
A ¦
B C D ¦
E ¦
*****************//注意D比较特殊
域运算符::
派生类对象可以给基类对象赋值,也可以作为父类对象的引用还有指针
派生类的成员可以是基类的对象 (这其实就是类的组合)
任何的机器,只要是运行应用,界面什么都是OS控制的,就一定有目标代码存在,应用一般是完整的汇编代码。但是产生应用的过程,是要用到专门的工具和平台,要用到类库。
任何运行程序都是和OS兼容的,而汇编代码都是和CPU兼容的,这是计算机核心。
参数类型推导 被覆盖的依然可以通过域运算符使用
静态成员
重载(静态多态)是多提的一种方式之一,还有虚函数(动态多态)
虚函数:在派生类中定义与基类同名字的函数,并且可以通过基类指针或引用来访问
虚函数就是来避免覆盖冲突的
静态关联(早期关联) 动态关联(滞后关联)//用基类指针对象来访问
虚析构函数 纯虚函数
Virtual int max( )=0;
抽象类 编译系统会构造虚函数表
类族 标准模板库STL 标准IO 文件IO 串IO
总体上来说,C++要比C好很多,各有各的优点吧
数据流表示从内存到IO的
IO缓冲区 流类 本质就是对象之间的活动,网社交的活动构成我们时空状态的变化
头文件里的流对象 类库的接口就是头文件
Cin流 cerr(特点就是不经过缓冲区) clog流(标准出错流) 头文件里运算符重载
格式控制头文件iomanip
流对象成员函数 格式标志
Cout.put(‘a’).put(24); putchar
EOF文件结束 cin.get( ); getline( ) eof( ) peek( ) putback( )
Ignore()
文本文件(字符文件) 二进制文件(字节文件,内部格式文件)
文件流类 输出文件(接受从内存的数据)
Ofstream outfile; //建立流对象
Outfile.open(“niu.txt”,ios::out);
虚函数的重载性
异质链表(指针数组):
Student *stu[100];
类属参数的函数就是模板函数 类属是参数化类型
模板是对于数据类型的模板 类模板 函数模板 模板类和模板函数是实例化的
这也是泛型程序设计
模板说明:
Template<typename T> 或者Template<class T>
类属类型的本质是int float……(前提是要定义好)
类模板就是类的成员里面的变量属性的代号
在类外定义函数的时候或者是实例化的时候在有T的地方加上array<t>即可
模板类的友元函数和友元类
标准模板库STL里的容器(数据结构集合)container 迭代器
容器:序列容器 关联容器 容器适配器 近容器
模板向量 构造容器
vector<int> V(10,0);
容器的本质是系统的函数调用
Vector<int> V(10,0); 里面的数据为容器对象
容器就是数据结构的元素的集合,是一种特殊的类,在调用使用上和类一样
容器是一个大对象,对象里面有小元素对象
容器迭代器很有好处(本质是容器指针)
Iterator迭代器 迭代子(本质是指针)
串流对象 string对象 串流本质是内存流
匿名对象 顺序索引文件 追加 标识常量 自定义流
二进制文件为随机存取 流指针
Input.seekg(120);
Infile.seekg(-30,ios::cur);
outfile.seekg(-30,ios::end);
ostream写指针函数 istream读指针函数
异常检测和处理 函数调用错误时产生异常,然后调用的人去处理这个异常
抛出异常之后这个函数就终结了,所以就是不唤醒,异常处理像是中断
Throw抛出 try捕获 catch处理
Throw niu//niu为异常类型
Try
{
……
}
Catch(参数1)
{
……
}
Catch(参数2)
{
……
}
……
……
异常列表 异常是在函数定义时候定义的
再抛出异常传递 构造函数里的异常处理
图标 cin cout的重定向 查找分类函数 文本窗口IO函数
命名空间(作用域) 嵌套命名空间
命名空间是来解决名字冲突的 命名空间成员 命名空间是大的特殊的类
无名命名空间 using 标准命名空间std
命名空间比头文件更大
using namespace std; //std里有标识符,要避免自己定义的与它的重名
Namespace //无名命名空间
{
Void fun()
{
cout<<”niu”<<end1;
}
} //命名空间成员可以是函数,作用和库函数一样
____________________________________________________________________
至此,C++概要总结完毕!
2017 6.9 兰州 雨
《C++总结3》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- Linux常用操作命令介绍
Linux常用操作命令介绍 重要概念 CPU:就像人的大脑,主要负责相关事情的判断以及实际处理的机制.查询指令:cat /proc/cpuinfo 内存:大脑中的记忆区块,将皮肤.眼睛等所收集到的信 ...
- Flutter安装教程
前言 自Flutter beta版发布, 经过几个月的发展, 它已成为了github社区开源项目活跃度的Top50.加上近日Google的Flutter Live 2018全球同步直播宣传,与 Flu ...
- ApplicationContextAware的作用
ApplicationContextAware其实我们看到---Aware就知道是干嘛用的了,就是属性注入的, 但是这个ApplicationContextAware的不同地方在于,实现了这个接口的b ...
- uml的十三种图形
1.用例图:对系统的使用方式分类. 2.类图:显示类和它们的相互关系. 3.对象图:只显示对象及它们的相互关系. 4.活动图:显示人或对象的活动,其方式类似于流程图. 5.状态机图:显示生命周期比较有 ...
- jQuery中表单的常用操作(全选、反选)
表单的全选.反选操作一 <form method="post" action=""> 你爱好的运动是?<input type="ch ...
- [持续更新] Linux基础的重要命令
命令总结:100个左右 mkdir 方法一 [root@localhost ~]# mkdir /test && ls -ld /test 方法二 [root@localhost ~] ...
- sharepoint2007就地升级2010系列(四)升级数据库
上一篇我们完成了系统的升级,今天我们来看一下SQL2005X64是如何升级到SQL2008X64的. 首先,我们先停掉所有sharepoint的服务 其实网上的文档并没有写到这一步,但是我个人觉得,要 ...
- ArcGIS Engine中的Symbols详解(转)
本文来源:http://blog.csdn.net/mengdong_zy/article/details/8980842 原文如下: Symbols Symbol level drawing Joi ...
- [原创]Debian9 从零编译配置Redis4.0
序言 Redis 一.准备工作 1.1 更新系统安装包列表 没啥,就他喵想用个最新的. # apt update 1.2 创建需要使用的目录 创建目录source和web,分别用来放源码和编译后的文件 ...
- Struts2_模块包含
<include file="login.xml"/> 包含其他的模块. 项目开发中,分模块协调开发有用. 链接: http://pan.baidu.com/s/1bo ...