C++
文章平均质量分 56
小峰峰疯疯的
学生
展开
-
类与对象
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2015-11-16 13:45:28 · 355 阅读 · 0 评论 -
I/O流类库(二)
文件流ofstream,由ostream派生而来,用于写文件ifstream,有istream派生而来,用于读文件fstream,由iostream派生而来,用于读写文件文件的打开说明了流对象之后,可使用函数open()打开文件。文件的打开即是在流与文件之间建立一个连接函数原型 void open(const char* filename, int原创 2016-01-04 19:27:58 · 446 阅读 · 0 评论 -
I/O流类库(三)
文件的读写>><<getputreadwrite文本模式打开与二进制模式打开区别>> 、<<#include <iostream>#include <fstream>#include<cassert>#include<string>using namespace std;int main(void){ ofstream fout("test.txt");原创 2016-01-04 22:08:37 · 329 阅读 · 0 评论 -
I/O流类库(四)
字符串流istringstream,由istream派生而来,提供读string的功能ostringstream,由ostream派生而来,提供些string的功能stringstream,由iostream派生而来,提供读写string的功能istringstream#include <iostream>#include<sstream>using namespace std;int m原创 2016-01-05 15:39:19 · 370 阅读 · 0 评论 -
I/O流类库(五)
输出流格式化以操纵子方式格式化 数据输入输出的格式控制使用系统头文件< iomanio >中提供的操作符。把它作为插入操作符<<的输出对象即可。以成员函数方式格式化 通过调用流的成员函数控制格式,如setf、unsetf、width、fill、precision等。优点是在设置格式同时,可以返回以前的设置,便于恢复原来的设置。操纵子方式常用的流操纵子 ios类中的枚举常量 #inclu原创 2016-01-05 18:48:13 · 372 阅读 · 0 评论 -
继承
代码重用C++很重要的一个特征就是代码重用。在C语言中重用代码的方式就是拷贝代码、修改代码。C++可以用继承或组合的方式来重用。通过组合或继承现有的类来创建新类,而不是重新创建它们。组合介绍:class A{public: void FunA();};class B{public: void FunB() { ... a_.Fu原创 2015-12-02 21:37:15 · 470 阅读 · 0 评论 -
异常
C语言错误处理方法返回值(if…else语句判断错误)errnogoto语句setjmp、longjmp(这种跳转不会调用对象析构函数,因为对象不能被正常清理)C语言的出错处理是被认为是紧耦合的,函数的使用者必须在非常靠近函数调用的地方编写错误处理代码,这会使得其变得笨拙以及难以使用程序错误编译错误 即语法错误,程序就无法被生成运行代码。运行时错误 不可预料的逻辑错误可以预料原创 2016-01-08 11:19:43 · 258 阅读 · 0 评论 -
模板(一)
模板是一种参数化的多态工具所谓参数化的多态性,是指将程序所处理的对象的类型参数化,使一段程序代码可以用于处理不同类型的对象采用模板编程,可以为各种逻辑功能相同而数据类型不同的程序提供一种代码共享的机制。函数模板形式 template <模板形参表> 返回值类型 函数名(模板函数形参表){ //函数定义体 }函数模板的定义以关键字template开头template之后的<>中是函数模原创 2016-01-10 21:37:27 · 276 阅读 · 0 评论 -
模板(三)
缺省模板参数template < typename T, typename CONT = deque< T > >#ifndef _STACK_H_#define _STACK_H_#include <exception>#include <deque>using namespace std;template <typename T, typename CONT = deque<T> >原创 2016-01-11 21:10:05 · 259 阅读 · 0 评论 -
模板(二)
类模板类模板:将类定义中的数据类型参数化类模板实际上是函数模板的推广,可以用相同的类模板来组建任意类型的对象集合 template <类型形参表> class <类名> { //类说明体 }; template <类型形参表> <返回类型><类名><类型名表>:: <成员函数1>(形参表) {原创 2016-01-11 13:09:19 · 251 阅读 · 0 评论 -
模板(四)
用模板实现单例模式方法1#ifndef _SINGLETON_H_#define _SINGLETON_H_template <typename T>class Singleton{public: static T& GetInstance() //静态成员函数,全局 { static T instance; //创建一个静态局部对象原创 2016-01-12 11:22:05 · 222 阅读 · 0 评论 -
I/O流类库(一)
I/O数据的输入输出(input/output简写为I/O)对标准输入设备和标准输出设备的输入输出简称为标准I/O堆在外存磁盘上的文件的输入输出简称为文件I/O对内存中指定的字符串存储空间的输入输出简称为串I/O流数据输入输出的过程,可以形象的看成流从流中获取数据的操作称为“提取”(输入)操作向流中添加数据的操作称为“插入”(输出)操作标准输入输出流文件流字符串流流类库继承体原创 2016-01-04 16:19:49 · 1169 阅读 · 0 评论 -
杂记
几个可能用到的宏元素和类型大小#define sizeof_v(x) (char*)(&x+1)-(char*)(&x)#define sizeof_t(t) ((size_t)((t*)0+1))对齐#define ALIGN(v, b) ((v+b-1)&~(b-1))原创 2016-01-04 16:01:05 · 218 阅读 · 0 评论 -
对象的使用
static成员对特定类型的全体对象而言,有时候需要访问一个全局的变量。比如说统计某种类型对象已创建的数量;如果我们用全局变量会破坏数据的封装,一般的用户代码都可以修改这个全局变量,这是我们可以用类的静态成员来解决这个问题;非static数据成员存在于类类型的每个对象中,static数据成员独立该类的任意对象存在,它是与类关联的对象,不与类对象关联。static成员声明、定义与初始化sta原创 2015-11-24 10:46:30 · 426 阅读 · 0 评论 -
虚函数与多态
多态多态性是面向对象程序设计的重要特征之一。多态性是指发出同样的信息被不同类型的对象接收时有可能导致完全不同的行为。多态的实现: 函数重载运算符重载模板虚函数 前三者为静态绑定,虚函数为动态绑定静态绑定与动态绑定静态绑定 绑定过程出现在编译阶段,在编译期就已经确定要调用的函数动态绑定 绑定过程工作在程序运行时执行,在程序运行时才确定将要调用的函数虚函数概念与定义虚函数的原创 2015-12-11 15:19:35 · 605 阅读 · 0 评论 -
RTTI
RTTIRTTI(runtime type information) 运行时类型信息dynamic_cast安全的向下转型,用于多态类的向下转型#include<iostream>using namespace std;class Shape{public: virtual void Draw() { cout << "Shape::Draw ..."原创 2015-12-13 15:07:59 · 429 阅读 · 0 评论 -
运算符重载(一)
运算符重载运算符重载允许把标准运算符(如+、-、*、/、<、>等)应用于自定义数据类型的对象直观自然,可以提高程序的可读性。体现了C++的可扩充性运算符重载仅仅只是语法上的方便,它是另一种函数调用的方式运算符重载,本质上是函数重载不要滥用重载、因为它只是语法上的方便,所以只有在涉及的代码更容易写、尤其是更易读时才有必要重载成员函数重载 成员函数原型的格式: 函数类型 operat原创 2015-11-26 13:02:42 · 423 阅读 · 0 评论 -
友元
友元函数友元函数在类作用域外定义,但它需要在类体中进行说明为了与该类的成员函数加以区别,定义的方式是在类中用关键字friend说明该函数,格式如下: friend 类型 友元函数名(参数表);友元的作用在于提高程序的运行效率#include<iostream>#include<math.h>using namespace std;class Point{ friend do原创 2015-11-26 14:11:18 · 475 阅读 · 0 评论 -
运算符重载(二)
++运算符的重载前置++运算符的重载成员函数的方式重载,原型为:函数类型 & operator++();友元函数的方式重载,原型为:friend 函数类型 & operator++(类类型&);后置++运算符的重载成员函数的方式重载,原型为:函数类型 operator++(int 参数);友元函数的方式重载,原型为:friend 函数类型 operator++(类类型&,int原创 2015-11-26 16:54:58 · 495 阅读 · 0 评论 -
string、vector
标准库string类型string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作 - typedef basic_stringchar> string; - typedef basic_string wstring;要使用string类型对象,必须包含相关头文件: #includeusing std::string原创 2015-11-30 20:57:48 · 461 阅读 · 0 评论 -
map
map介绍使用map得包含map类所在的头文件#include <map>定义一个map对象:map<string,int> mapTest; //用string作为索引,存储int对象 <key,value>插入数据1. mapTest["aaa"] = 100;2. mapTest.insert(map<string,int>::value_type("bbb",200));3. m原创 2015-12-02 11:07:45 · 414 阅读 · 0 评论 -
单例模式与auto_ptr
#include<iostream>#include<memory> //!!!!!!!!!!!!!!需要包含的头文件using namespace std;class Singleton{public: static Singleton* GetInstance() { if(instance_.get() == NULL) {原创 2016-01-04 15:26:58 · 553 阅读 · 0 评论 -
STL(一)
泛型程序设计泛型编程(generic programming)将程序写的竟可能通用将算法从数据结构中抽象出来,成为通用的C++的模板为泛型程序设计奠定了关键的基础什么是STLSTL(Standard Template Library),即标准模板库,是一个高效的C++程序库包含了诸多在计算机科学领域中常用的基本数据结构和基本算法。为广大的C++程序员提供了一个可扩展的应用框架,高度体现原创 2016-01-13 13:20:55 · 254 阅读 · 0 评论