《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 安装并启动 ...
随机推荐
- 使用summernote编辑器上传图片,重写onImageUpload
JS部分:$('.summernote').summernote({ height: 200,//高度 tabsize: 2,//页面上的summernote编辑框的个数 lang: 'zh-CN', ...
- 错误 chamfermatching.cpp:969:30: error: the compiler can assume that the address of ‘annotate_img’
修改 ./build/modules/contrib/CMakeFiles/opencv_contrib.dir/flags.make文件,删掉-Werror=address,然后重新make
- winscp介绍与使用
winscp介绍 WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端.同时支持 SCP 协议.它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑 ...
- Cloudera Kudu是什么?
不多说,直接上干货! Cloudera Kudu是什么? kudu是cloudera在2012开始秘密研发的一款介于hdfs和hbase之间的高速分布式列式存储数据库.兼具了hbase的实时性.hdf ...
- php验证码处理
//基本步骤 1,先创建一张指定宽度和高度的一张验证码图片 imagecreatetruecolor() 2,给验证码图片添加背景颜色 和文字颜色 imagecolorallocate() 3, 在指 ...
- QML 程序运行效率
同样的程序,在 Windows 下面启动时非常慢,而在 Linux 上启动时很快,一方面是因为 qml 界面的创建耗时不同,另一方面是因为读取文件的用时相差太大导致. On Linux 在 Linux ...
- jQuery源码浅析2–奇技淫巧
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- Win2D 官方文章系列翻译 - 调整控件分辨率
本文为个人博客备份文章,原文地址: http://validvoid.net/win2d-choosing-control-resolution/ 本文旨在讲解如何配置 Win2D XAML 控件使用 ...
- c# 远程连接sql server 2008问题
http://hi.baidu.com/lzghxjt/item/d42bd8f7066a3ad86325d280 远程连接不上可以在防火墙新建入站规则
- CSS透明度设置(兼容性)
一句话搞定透明背景! .transparent_class { filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opa ...