c/c++
confiself
这个作者很懒,什么都没留下…
展开
-
从零开始学C++之运算符重载(三):完善String类([]、 +、 += 运算符重载)、>>和<<运算符重载
转:http://blog.csdn.net/jnu_simba/article/details/9294115在前面文章中使用过几次String类的例子,现在多重载几个运算符,更加完善一下,并且重载流类运算符。[]运算符重载+运算符重载+=运算符重载>>运算符重载String.h: C++ Code 12转载 2015-03-04 23:12:20 · 331 阅读 · 0 评论 -
虚析构函数? vptr? 指针偏移?多态数组? delete 基类指针 内存泄漏?崩溃? .
转:http://blog.csdn.net/jnu_simba/article/details/12621955五条基本规则:1、如果基类已经插入了vptr, 则派生类将继承和重用该vptr。vptr(一般在对象内存模型的顶部)必须随着对象类型的变化而不断地改变它的指向,以保证其值和当前对象的实际类型是一致的。2、在遇到通过基类指针或引用调用虚函数的语句时,首先根据指转载 2015-03-04 22:38:33 · 347 阅读 · 0 评论 -
[置顶] 虚析构函数? vptr? 指针偏移?多态数组? delete 基类指针 内存泄漏?崩溃?
转:http://blog.csdn.net/jnu_simba/article/details/12621955五条基本规则:1、如果基类已经插入了vptr, 则派生类将继承和重用该vptr。vptr(一般在对象内存模型的顶部)必须随着对象类型的变化而不断地改变它的指向,以保证其值和当前对象的实际类型是一致的。2、在遇到通过基类指针或引用调用虚转载 2015-03-05 10:00:20 · 256 阅读 · 0 评论 -
从零开始学C++之STL(一):STL六大组件简介
转:http://blog.csdn.net/jnu_simba/article/details/9410459一、STL简介(一)、泛型程序设计泛型编程(generic programming)将程序写得尽可能通用将算法从数据结构中抽象出来,成为通用的C++的模板为泛型程序设计奠定了关键的基础(二)、什么是STL转载 2015-03-05 09:45:16 · 364 阅读 · 0 评论 -
从零开始学C++之模板(二):类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)
转:http://blog.csdn.net/jnu_simba/article/details/9396347一、类模板类模板:将类定义中的数据类型参数化类模板实际上是函数模板的推广,可以用相同的类模板来组建任意类型的对象集合(一)、类模板的定义template class { //类说明体 };template :转载 2015-03-05 09:42:01 · 525 阅读 · 0 评论 -
从零开始学C++之虚函数与多态(一):虚函数表指针、虚析构函数、object slicing与虚函数、C++对象模型图 .
转:http://blog.csdn.net/jnu_simba/article/details/9316575一、多态多态性是面向对象程序设计的重要特征之一。多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。多态的实现:函数重载运算符重载模板虚函数(1)、静态绑定与动态绑定静态绑定绑定过程出现在编译阶段,在编译转载 2015-03-04 23:23:42 · 322 阅读 · 0 评论 -
从零开始学C++之对象的使用(一):static 成员变量、static 成员函数、类/对象的大小
转:http://blog.csdn.net/jnu_simba/article/details/9236565一、static 成员变量对于特定类型的全体对象而言,有时候可能需要访问一个全局的变量。比如说统计某种类型对象已创建的数量。如果我们用全局变量会破坏数据的封装,一般的用户代码都可以修改这个全局变量,这时可以用类的静态成员来解决这个问题。非static数据成员存在于类类转载 2015-03-04 23:03:37 · 269 阅读 · 0 评论 -
从零开始学C++之从C到C++(二):引用、数组引用与指针引用、内联函数inline、四种类型转换运算符
转:http://blog.csdn.net/jnu_simba/article/details/9151287一、引用(1)、引用是给一个变量起别名定义引用的一般格式:类型 &引用名 = 变量名;例如:int a=1; int &b=a;// b是a的别名,因此a和b是同一个单元注意:定义引用时一定要初始化,指明该引用是谁的别名在实际应用中,引用一般用作参数传递与返转载 2015-03-04 22:52:53 · 250 阅读 · 0 评论 -
从零开始学C++之STL(十一):容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
转:http://blog.csdn.net/jnu_simba/article/details/9564503一、容器适配器stackqueuepriority_queuestack、queue、priority_queue 都不支持任一种迭代器,它们都是容器适配器类型,stack是用vector/deque/list对象创建了一个先进后出容器;que转载 2015-03-05 09:57:35 · 484 阅读 · 0 评论 -
从零开始学C++之STL(九):函数适配器bind2nd 、mem_fun_ref 源码分析、函数适配器应用举例
转:http://blog.csdn.net/jnu_simba/article/details/9530341一、适配器三种类型的适配器:容器适配器:用来扩展7种基本容器,利用基本容器扩展形成了栈、队列和优先级队列迭代器适配器:(反向迭代器、插入迭代器、IO流迭代器)函数适配器:函数适配器能够将仿函数和另一个仿函数(或某个值、或转载 2015-03-05 09:55:23 · 339 阅读 · 0 评论 -
从零开始学C++之模板(四):用模板实现单例模式(线程安全)、模板方式实现动态创建对象
转:http://blog.csdn.net/jnu_simba/article/details/9398465一、用模板实现单例模式在前面的文章中,用过多种方法实现单例模式,现在用模板方式来实现:为了实现线程安全,需要在linux 下使用pthread_mutex_t 加锁,请使用g++ 编译并需要链接 -lpthread使用的是double-check lo转载 2015-03-05 09:44:03 · 283 阅读 · 0 评论 -
从零开始学C++之IO流类库(二):文件流(fstream, ifstream, ofstream)的打开关闭、流状态
转:http://blog.csdn.net/jnu_simba/article/details/9383433一、文件流ofstream,由ostream派生而来,用于写文件ifstream,由istream派生而来, 用于读文件fstream,由iostream派生而来,用于读写文件二、打开文件说明了流对象之后,可使用函数open()转载 2015-03-05 09:34:58 · 535 阅读 · 0 评论 -
从零开始学C++之IO流类库(一):流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作
转:http://blog.csdn.net/jnu_simba/article/details/9381255一、IO、流数据的输入和输出(input/output简写为I/O)对标准输入设备和标准输出设备的输入输出简称为标准I/O对在外存磁盘上文件的输入输出简称为文件I/O对内存中指定的字符串存储空间的输入输出简称为串I/O数据输入输出的转载 2015-03-05 09:31:49 · 265 阅读 · 0 评论 -
从零开始学C++之异常(一):C语言错误处理方法、C++异常处理方法(throw, try, catch)简介
转:http://blog.csdn.net/jnu_simba/article/details/9342853一、C语言错误处理方法1、返回值(if … else语句判断错误)2、errno(linux 系统调用)3、goto语句(函数内局部跳转)4、setjmp、longjmp(Do not use setjmp and longjmp in C++ progr转载 2015-03-04 23:28:59 · 570 阅读 · 0 评论 -
从零开始学C++之虚函数与多态(二):纯虚函数、抽象类、虚析构函数
转:http://blog.csdn.net/jnu_simba/article/details/9317325一、纯虚函数虚函数是实现多态性的前提需要在基类中定义共同的接口接口要定义为虚函数如果基类的接口没办法实现怎么办?如形状类Shape解决方法将这些接口定义为纯虚函数在基类中不能给出有意义的虚函数定义,这时可转载 2015-03-04 23:25:32 · 324 阅读 · 0 评论 -
从零开始学C++之继承(三):多重继承、虚继承与虚基类
转:http://blog.csdn.net/jnu_simba/article/details/9314731一、多重继承单重继承——一个派生类最多只能有一个基类多重继承——一个派生类可以有多个基类class 类名: 继承方式 基类1,继承方式 基类2,…. {….};派生类同时继承多个基类的成员,更好的软件重用可能会有大量的二义性,多个基类中可能包含同名转载 2015-03-04 23:22:50 · 286 阅读 · 0 评论 -
从零开始学C++之IO流类库(二):文件流(fstream, ifstream, ofstream)的打开关闭、流状态 .
转:http://blog.csdn.net/jnu_simba/article/details/9383433一、文件流ofstream,由ostream派生而来,用于写文件ifstream,由istream派生而来, 用于读文件fstream,由iostream派生而来,用于读写文件二、打开文件说明了流对象之后,可使用函数open()打开文件。文件的打开即是转载 2015-03-04 22:41:34 · 133 阅读 · 0 评论 -
从零开始学C++之友元:友元函数和友元类
转:http://blog.csdn.net/jnu_simba/article/details/9284777一、友元介绍我们知道,类的成员函数可以访问同类的其他成员函数,包括公有、私有和保护成员。而类的外部函数只能访问类的公有成员。友元是一种允许非类成员函数访问类的非公有成员的一种机制。可以把一个函数指定为类的友元,也可以把整个类指定为另一个类的友元。友元函数转载 2015-03-04 23:08:24 · 336 阅读 · 0 评论 -
C++Primer 笔记之----变量和函数
第2章 变量和基本类型2.5 引用1、引用(1)引用和指针一样,是绑定对对象的另外一个名字,改变它或者它绑定的对象,都会使双方改变(2)必须是一个对象的别名, int &b=1;是错的(3)若绑定的对象时const类型,那么引用也必须是const类型 如: const int a=1; (必须初始化),const int &b=a;2、枚举enum A{a,b,c};原创 2015-03-12 20:32:28 · 344 阅读 · 0 评论 -
C++Primer 笔记之----类
第12章 类1、构造函数构造函数的定义比较简单的话还是放在类内部,如 Sales_Item():a(0),b(0){};sales_Item(int c):a(c),b(0){};//在不允许修改对象的数据成员时,用const但是具体还有另外的使用情况,忘了,这应该是最常用的情况吧。int fuc() const;//声明和定义中都必须要有const,但是内联函数可以不需要,只要在内部原创 2015-03-06 21:50:53 · 550 阅读 · 1 评论 -
C++Primer新笔记之----容器和算法
9.1、顺序容器概述包括 vector、deque、list、forward_list、array、string //其中forward_list、array为c++11的新特性另外还有3种适配器,stack、queue、priority_queue;9.2、迭代器#include "stdafx.h"#include #include#include#inclu原创 2015-03-21 16:45:28 · 353 阅读 · 0 评论 -
大数据排序相关
1、1亿个整数排序。主要有两种方法,一种是利用归并进行外部排序,思想如下:(1)将文件中的数据按固定长度读入内存数组中,快排后,存入不同的文件中。(2)同时打开这些文件,读入第一个到临时数组中,找最小的数,若找到,则对应的文件读下一个。(3)若当前文件读完,在标志数组位置置为false.(4)直到所有标志都为false循环结束。代码如下:#include #inclu原创 2015-09-04 22:49:12 · 827 阅读 · 0 评论 -
C++Primer新笔记之----第6章函数
1、局部静态对象原创 2015-08-05 16:54:56 · 104 阅读 · 0 评论 -
C++ ofstream和ifstream详细用法
原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/database/460/11433960.sh[导读]ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O.st转载 2015-08-15 17:06:57 · 106 阅读 · 0 评论 -
C++Primer新笔记之----第11章 使用关联容器
11.1 使用关联容器1、set#include "stdafx.h"#include #include using namespace std;int main(){ int a[] = {1,2,3}; set s(a,a+3); set::iterator iter;//不能用auto for(auto iter=s.beg原创 2015-08-05 16:54:10 · 98 阅读 · 0 评论 -
C++Primer新笔记之----第10章泛型算法
10.1 一些算法#include "stdafx.h"#include #include#include#include#include#include#includeusing namespace std;int _tmain(int argc, _TCHAR* argv[]){ vector v; fill_n(back_inse原创 2015-08-05 16:54:38 · 106 阅读 · 0 评论 -
C++Primer 笔记之----第16章 模板与泛型编程
引子:在C++中,模板是泛型编程的基础,是创建类或函数的公式,比如说vector16.1 模板定义1、定义函数模板template //模板形参表,可以是多个,用,号隔开inline int compare(const T &v1,const T &v2)//inline必须放在返回类型之前,当然也可以不设置为内联函数{ if(v1>v2)return 1; if(原创 2015-03-12 15:28:11 · 147 阅读 · 0 评论 -
C++ Primer笔记之----第15章面向对象编程
15.1、面向对象编程:概述1、继承特点:派生类具有原来的基本特性具有自己的特性具有自己的成员注意:基类要想使派生类重新定义,那么必须声明为虚函数 virtual问题:那么不声明可否?测试下#include "stdafx.h"#include using namespace std;class Food{public: void Des(){cout<原创 2015-03-11 15:33:40 · 147 阅读 · 0 评论 -
c++Primer 笔记之----第14章重载操作符与转换
14.1重载操作符的定义(1)重载操作符必须具有一个类类型操作数,这时避免改变内置类型的定义(2)优先级和结合性是固定的,一般还是遵守+-*&的规则(3)一般不重载&& ||操作符(4)一般算术和关系操作符定义为非成员函数,而将赋值操作符定义为成员(5)返回类型和左边形参一样运算符重载形式有两种,重载为类的成员函数和重载为类的友元函数。运算符重载为类的成员函数的一般原创 2015-03-09 20:26:06 · 151 阅读 · 0 评论 -
C++Primer 笔记之----第13章复制控制
1、复制构造函数原创 2015-03-07 18:29:27 · 149 阅读 · 0 评论 -
从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
转:http://blog.csdn.net/jnu_simba/article/details/9397219一、缺省模板参数回顾前面的文章,都是自己管理stack的内存,无论是链栈还是数组栈,能否借助标准模板容器管理呢?答案是肯定的,只需要多传一个模板参数即可,而且模板参数还可以是缺省的,如下:template >class Stack{…转载 2015-03-05 09:43:03 · 394 阅读 · 0 评论 -
从零开始学C++之标准库类型(三):map 类简介和例程
转:http://blog.csdn.net/jnu_simba/article/details/9303729一、标准库的map类型使用map得包含map类所在的头文件 template < class Key, class Type, class Traits = less, class Allocator=allocator >转载 2015-03-04 23:18:29 · 334 阅读 · 0 评论 -
从零开始学C++之运算符重载(四):类型转换运算符、*运算符重载、->运算符重载、operator new 和 operator delete .
转:http://blog.csdn.net/jnu_simba/article/details/9295729一、类型转换运算符必须是成员函数,不能是友元函数没有参数不能指定返回类型函数原型:operator 类型名(); C++ Code 12345678910111213转载 2015-03-04 23:14:09 · 265 阅读 · 0 评论 -
从零开始学C++之从C到C++(一):const与#define、结构体对齐、函数重载name mangling、new/delete 等 .
转:http://blog.csdn.net/jnu_simba/article/details/9150415一、bool 类型逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节。声明方式:bool result; result=true;可以当作整数用(true一般为1,false为0)把其它类型转载 2015-03-04 22:50:34 · 440 阅读 · 0 评论 -
[置顶] 从零开始学C++之boost库(一):详解 boost 库智能指针(scoped_ptr<T> 、shared_ptr<T> 、weak_ptr<T> 源码分析)
转:http://blog.csdn.net/jnu_simba/article/details/9569593一、boost 智能指针智能指针是利用RAII(Resource Acquisition Is Initialization:资源获取即初始化)来管理资源。关于RAII的讨论可以参考前面的文章。在使用boost库之前应该先下载后放在某个转载 2015-03-05 09:59:57 · 300 阅读 · 0 评论 -
从零开始学C++之STL(八):函数对象、 函数对象与容器、函数对象与算法
转:http://blog.csdn.net/jnu_simba/article/details/9500219一、函数对象1、函数对象(function object)也称为仿函数(functor)2、一个行为类似函数的对象,它可以没有参数,也可以带有若干参数。3、任何重载了调用运算符operator()的类的对象都满足函数对象的特征转载 2015-03-05 09:54:41 · 299 阅读 · 0 评论 -
从零开始学C++之动态创建对象
转:http://blog.csdn.net/jnu_simba/article/details/9318799回顾前面的文章,实现了一个简单工厂模式来创建不同类对象,但由于c++没有类似new "Circle"之类的语法,导致CreateShape 函数中需要不断地ifelse地去判断,如果有多个不同类对象需要创建,显然这是很费神的,下面通过宏定义注册的方法来实现动态创建对象。转载 2015-03-04 23:26:43 · 281 阅读 · 0 评论 -
从零开始学C++之继承(二):继承与构造函数、派生类到基类的转换
转:http://blog.csdn.net/jnu_simba/article/details/9312659一、不能自动继承的成员函数构造函数(包括拷贝构造函数)析构函数=运算符二、继承与构造函数基类的构造函数不被继承,派生类中需要声明自己的构造函数。声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化调用基类构造函数完成(如转载 2015-03-04 23:21:34 · 304 阅读 · 0 评论 -
从零开始学C++之标准库类型(二):vector 类简介和例程
转:http://blog.csdn.net/jnu_simba/article/details/9301943一、标准库的vector类型vector是同一种类型的对象的集合 vector的数据结构很像数组,能非常高效和方便地访问单个元素vector是一个类模板(class template) template < class Type, c转载 2015-03-04 23:17:47 · 195 阅读 · 0 评论 -
从零开始学C++之运算符重载(二):++运算符重载、!运算符重载、赋值运算符重载
转:http://blog.csdn.net/jnu_simba/article/details/9293455一、++运算符重载前置++运算符重载成员函数的方式重载,原型为:函数类型 & operator++();友元函数的方式重载,原型为:friend 函数类型 & operator++(类类型 &);后置++运算符重载成转载 2015-03-04 23:11:00 · 304 阅读 · 0 评论