《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 安装并启动 ...
随机推荐
- 案例53-crm练习修改客户功能实现
1 CustomerAction 完整代码: package www.test.web.action; import java.io.File; import org.apache.commons.l ...
- Apache-ant安装以及环境变量配置、验证
(一)安装 ant 下载地址: http://ant.apache.org/ 根据自己电脑下载对应版本 下载完成以后,可自行解压到自己常用的盘中,但是要记住解压到哪里了,以便后续的环境变量配置 ...
- [转]asp.net core视图组件(ViewComponent)简单使用
本文转自:http://www.cnblogs.com/dralee/p/6170496.html 一.组成: 一个视图组件包括两个部分,派生自ViewComponent的类及其返回结果.类似控制器. ...
- NPOI 操作EXCEL 小计
由于需要做一个生成下载Excel的功能,查了一下 常用的操作有 NPOI Spire DOCX,于是便下载了NPOI试了一下,发现确实好用,但是还是有几个比较坑的地方 1.不能直接删除列 虽然提供了 ...
- Python的历史与基本知识入门
一.Python简介 1.1989年由"龟叔"Guido van Rossum在圣诞节期间打发无聊时间编写. 2.Python是一门弱类型解释性语言. 3.优点:代码简洁,明确,优 ...
- 零基础逆向工程34_Win32_08_线程控制_CONTEXT结构
线程控制 实验 挂起线程 ::SuspendThread(hThread); 恢复线程 ::ResumeThread(hThread); 终止线程 (这里讲了同步调用与异步调用) 方式一: 此方法结束 ...
- iDempiere 使用指南 销售发货流程
Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...
- 栅格那点儿事(四C)
栅格渲染之拉伸(Stretch) 现在我们知道如何在ArcGIS中渲染栅格数据了,但是还有一个常常会碰到的问题,尤其是在使用老版本的ArcGIS的时候,为啥我加了一个栅格数据进来,啥也看不见,是黑色的 ...
- 【起航计划 009】2015 起航计划 Android APIDemo的魔鬼步伐 08 App->Activity->QuickContactsDemo 联系人 ResourceCursorAdapter使用 QuickContactBadge使用
QuickContactsDemo示例介绍了如何使用Content Provider来访问Android系统的Contacts 数据库. Content Provider为不同应用之间共享数据提供了统 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述
1.前言 ArcGIS Runtime SDK是一整套用于构建原生及跨平台的地图应用程序的开发包,包括移动设备的Android.iOS.Windows Phone,针对桌面的.Net.Java.OSX ...