55,C++(09)
来源:互联网 发布:知乎 短句 编辑:程序博客网 时间:2024/05/16 17:16
/*
达内学习 C++ day53 2013-11-15
*/
1,多态的概念和分析
当父类对象的指针或引用指向子类对象时,调用父类型中定义的虚函数,调用的表现会是相应的子类的实现。
继承是多态的基础,父类对象的指针或引用是多态的前置条件,虚函数是关键。
2,多态的举例
3,函数的重写;
虚函数的重写(overwrite);
参数列表和返回值都必须相同(权限没有限制);
异常不能抛出更大或者更多;
4,多态的应用
通用性编程(函数的参数函数的返回值)
5,多态的本质
虚函数表
6,运行时识别
a.typeid 返回一个类型信息 或者 一个对象的类型信息
type_info -----------#include<typeinfo>
name()类型名字 ==类型相等 !=类型不等
识别多态类型 必须满足多态要求
b.dynamic_cast<类型>(对象)
static_cast<类型>(对象)
具备多态性的类型转换 必须使用dynamic_cast 如果成功返回合法地址,不成功返回 NULL,引用类型转换不成功抛出异常;
static_cast 无论是否合法都会返回合法地址
7,抽象类
具备纯虚函数的类 叫抽象类
抽象类不能实例化 除此之外和其他类没有区别
如果一个类继承了一个抽象类没有实现纯虚函数 还是抽象类
virtual void show() = 0;
8,虚析构函数
当一个类中有虚函数时,就把析构函数定义成虚析构函数。
为确保子类的析构函数会调用。
//====================================================
C++中的io
1,c++ io的分类
针对控制台 #include<iostream>
istream ostream
cin cout
针对文件 #include<fstream>
ifstream ostream fstream
针对字符串 #include<sstream>
istringstream ostringstream
2,非格式化io
put get
getline() 读取一行数据 可以指定结束符号
cin.clear() 复位 纠正流的状态 但是不清空缓冲区
ignore(int n,char c = '\n') 最多忽略掉n个字符,到 c为止。
putback(char c)退回一个字符
peek() 察看一个字符,不动文件指针 相当于察看后还回
3,字符串操作
string c++中的字符串
把C的字符串转换成C++ string
string string(const char* str)
常用的运算符 == + += []
常用的函数 .size() c_str()
转换成C串 string str; const char* cstr = str.c_str();
流输入的数据最终会变成字符串
ostringstream ostr;
ostr<<123;
数据来字字符串
istringstream istr;
int data;
istr>>data;
当前时间对应日期2013-11-1514:25:38
char timestr[100];
time_t t = time(0);
struct tm* mytm = localtime(&t);
sprintf(timestr,"%04d-%02d-%02d%02d:%02d:%02dtestfile",mytm->tm_year+1900,mytm->tm_mon+1,mytm->tm_mday,mytm->tm_hour,mytm->tm_min,mytm->tm_sec);
C++的字符串格式拼接
ostringstream ostr;
ostr<<123<<' '<<123.45<<' '<<"test";
把流对象变成字符串
string cppstr = ostr.str();
4,文件的输入输出
ifstream(c串,模式)
ofstream(c串,模式)
fstream(c串,模式)
模式:ios::in ios::out ios::binary ios::app
ios::trunc(清空) ios::ate(跳到文件尾,如果是输出流则把文件清空)
如果流对象有文件名并创建对象成功,则同时文件打开。
read(数据地址,大小);返回值都是对象
write(数据地址,大小);
gcount() 本次读取的数据量
以dog为单位进行读写
使用read write gcount 读取一个文件的内容,然后把读取到的内容 每个字节都和一个固定的随机数据^操作,然后把这个数据写入另一个文件
//----
istream seekg 调整读取的位置
tellg 得到读取的位置
ostream seekp 调整写的位置
tellp 得到写的位置
SEEK_CUR ios::cur ios::beg ios::end
随机读写文件
清空文件 cat /dev/null> file
fsream
//=============
异常 exception
系统异常
用户自定义异常
c++中任何类型的数据都有表示异常
如果一个类里没有虚函数 则typeid不会抛出异常,当这个类中有虚函数 并且这个类的指针指向NULL,则对这个指针指向的对象进行使用 typeid 则会抛出bad_typeid
- 55,C++(09)
- 【C语言】09-字符串
- 09,标准C
- 标准C知识09
- 【C语言】09-字符串
- 【C语言】09-字符串
- 【C语言】09-字符串
- 【C语言】09-字符串
- 《C++》09 C++数据结构
- c
- c
- c
- c
- C
- c
- c
- c
- C+
- 53,C++(07)
- 国内教育培训机构如何做到“良心教育”
- android面试汇总(百度+360+Tencent+淘宝+HTC)
- Code Fragment-使用枚举策略模式表示状态
- 54,C++(08)
- 55,C++(09)
- Win32多线程之线程之间的通信
- TI c6000 与arm 数据类型的区别
- android shell input
- 《代码大全第二版》学习笔记(四)
- wordpress 读取文章部分内容
- ListView的上拉和下拉弹簧效果
- java学习之路3
- MFC制作倒数计时器