C++
文章平均质量分 72
tom555cat
这个作者很懒,什么都没留下…
展开
-
C++程序内存分配
程序运行时,特别要注意的是内存的分配。下面介绍C++程序设计中的内存分配。一、内存基本构成可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束转载 2013-11-22 10:09:13 · 670 阅读 · 0 评论 -
reactor模式
Reactor的框架有5个关键部分:1》原创 2014-04-30 11:39:40 · 777 阅读 · 0 评论 -
vector实现
#pragma once#include #include template class vector{public: typedef T value_type; typedef value_type* pointer; typedef value_type* iterator; typedef value_type& reference; typedef size_t si原创 2014-04-02 17:08:39 · 816 阅读 · 0 评论 -
大整数C++类的实现
#include#include#include#includeusing namespace std;class BigInt{public: // 操作符重载:1. 参数数目。2. 什么操作符重载应该设为成员函数。 friend ostream& operator << (ostream& out,BigInt& bint); BigInt(); BigInt(unsign原创 2014-03-24 19:12:07 · 750 阅读 · 0 评论 -
智能指针
在类中有指针成员时,使用复制拷贝函数可以使每一个类的对象都有一份自己的指针成员指向的拷贝,以防止如果被拷贝的对象XIGOU,复制的对象的指针成员成为野指针。另一种避免这种结果的途径就是智能指针。智能指针的一种实现方式是指针成员所指空间建立一个计数器,而不是区复制这个空间。每当这个拥有这个指针成员的对象被复制一次,这个计数器就加1.具体情况是这么个样子:代码:#include原创 2014-03-24 20:36:12 · 591 阅读 · 0 评论 -
解析一个单例模式
该单例模式的例子来自《》原创 2014-04-04 16:23:17 · 579 阅读 · 0 评论 -
向基类构造函数传递参数
引言:继承固然为我们节省了不少的时间和工序,但是由于子类是由基类派生出来的,因此我们在创建派生类的对象时,仍然需要对基类进行初始化。原因也不难理解,因为子类将基类的所有成员都继承了过去,所以被继承的成员也会出现在子类里,那么我们在构造一个子类的对象时,就会难免调用基类的构造函数。在创建派生类的构造函数时,有两种方法可以对数据进行初始化。第一种:在派生类中创建一个构造函数,然后初始化所以转载 2014-03-26 10:02:09 · 6230 阅读 · 3 评论 -
Static (C++)
Visual Studio 2013 Other VersionsThe static keyword can be used to declare variables, functions, class data members and class functions.By default, an object or variable that is de转载 2014-05-07 19:34:37 · 604 阅读 · 0 评论 -
pthread_once单例模式
在陈硕的《Linux多线程服务端编程》上的使用pthread_once实现的单例模式templateclass Singleton : boost::noncopyable{public: static T& instance(){ pthread_once(&once_, &Singleton::init); return *valu原创 2014-04-03 18:08:36 · 3974 阅读 · 0 评论 -
bind/function使用
function是一个函数对象的“容器”,原创 2014-05-09 16:27:39 · 912 阅读 · 1 评论 -
#define list_entry(ptr, type, member)
#define list_entry(ptr, type, member) \ ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) ptr是指向list_head类型链表的指针,type为一个结构,而member为结构type中的一个域,类型为list_head,这个宏返回指向type结构的指转载 2014-05-16 14:29:11 · 1618 阅读 · 1 评论 -
海量数据处理:十道面试题与诗歌海量数据处理方法我自己的总结
1. 海量日志数据,提取出某日访问百度次数最多的那个IP。原创 2014-07-07 22:59:34 · 637 阅读 · 0 评论 -
c++线程池
在用C++实现线程池时,由于不能传递一个成员函数给pthread_create,所以原创 2014-08-13 15:54:41 · 533 阅读 · 0 评论 -
extern体会
extern有三种用法,一个是声明或定义全局变量,一个是原创 2014-08-13 17:31:19 · 505 阅读 · 0 评论 -
关于构造函数和析构函数的隐式调用
一、首先是最基本的调用:class Test{public: Test() {cout<<"default constructor"<<endl;} ~Test() {cout<<"default destructor"<<endl;} Test(int i):a(i){cout<<"from copy"<<endl;} Test(const Test&) {cout<<"copy原创 2014-12-02 19:20:14 · 1513 阅读 · 0 评论 -
自己写一个string类
头文件:#ifndef _STRINGS_#define _STRINGS_#include using namespace std;class Strings{ friend ostream& operator<<(ostream& os, const Strings& s);public: Strings(); Strings(char *s); Strings(co原创 2014-03-28 17:42:59 · 930 阅读 · 0 评论 -
一个工具类的C++项目CommonTools
#pragma once这是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次。LARGE_INTEGER表示一个64位有符号整数。class XXX{public: static int xxxxxxx;}类内的静态数据成员#pragma warning(disable:4996)将原创 2013-09-25 08:41:00 · 2903 阅读 · 0 评论 -
new一个类对象和使用类名创建一个对象有什么区别?
用new来给一个类的对象分配空间,和使用类名称来定义一个类的对象,有什么区别?难道区别只是new的返回值是个指针,而对象定义得到的是变量名么?或者是在存储空间上不同?有什么不同呢?具体什么时候使用哪个方法呢?偶义正言辞滴说:分数就是用来给的! ----------------------------------------------------------------------转载 2013-11-28 10:03:11 · 1569 阅读 · 1 评论 -
关于头文件中常量和静态常量的用处
常量,即不能改变的量。静态,即内存中只存在一个。C++ Primer中提到在全局作用域中定义的const变量默认为文件的局部变量,像//file_1.ccconst int DDD = 1;//file_2.ccextern const int DDD;这样的用法是错误的。会出现这样的错误。而在全局作用域中定义的非const变量在整个程序中都可以使用。//原创 2013-12-05 11:46:02 · 1812 阅读 · 0 评论 -
外部变量和静态变量
外部变量1.简介 外部变量是在函数外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的结尾。在此作用域内,全局变量可为各个函数所引用。编译时将外部变量分配在静态存储区。有时需要在其他文件中使用extern来声明外部变量,以扩展外部变量的作用域。 也可用static声明外部变量,使该变量不能被其他文件引用。2.用extern声明外部转载 2013-12-05 20:08:31 · 3792 阅读 · 0 评论 -
getline(),sscanf(),strtok(),atof()
istream& getline ( istream &is , string &str , char delim );istream& getline ( istream& , string& );is 进行读入操作的输入流str 存储读入的内容delim 终结符cin.getline()此函数是按行读取,其语法为:cin.getline(字符指针,字符个数N,结束符原创 2013-12-11 19:43:25 · 1330 阅读 · 0 评论 -
C++批量修改文件名字
为了实验方便,需要为实验数据文件的名字添加一些标注。为了方便地添加或修改文件名标注,所以写了这个程序。实验数据来自CMU Graphics Lav Motion Capture Database。其中的文件名为:01_01.amc, 前两位是两个数字,代表这条运动数据的表演者。然后是下划线。接着又是两个数字,代表这个表演者表演的第几个运动。文件格式是amc。由于一些原因,会导致文件名后原创 2013-12-18 14:45:08 · 6340 阅读 · 1 评论 -
C++访问控制和继承
《C++ Primer》关键概念:类设计与受保护成员 如果没有继承,类只有两种用户:类本身的成员和该类的用户。将类划分为private和public级别反映了用户种类的一种分隔:用户只能访问public接口,类成员和友元既能访问public成员也可以访问private成员。 但有了继承,就有了类的第三种用户:从类派生定义新类的程序员。派生类的提供者通常(但并转载 2014-02-18 12:21:02 · 538 阅读 · 0 评论 -
C++的动态绑定
C++中,动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。C++中的函数调用默认不使用动态绑定。要触发动态绑定,必须满足两个条件:第一,只有指定为虚函数的成员函数才能进行动态绑定,成员函数默认为非虚函数,非虚函数不进行动态绑定;第二,必须通过基类类型的引用或指针进行函数调用。转载 2014-02-18 17:29:15 · 635 阅读 · 0 评论 -
C++的类成员函数的使用体会
这一阵做项目代码开发的时候,用到了在一个C++文件中使用另一个类的成员函数的问题,做个小总结。其中有些是网上搜索的资料,因为比较分散就不一一给出出处了,请作者见谅。1.C++如何在一个类的成员函数中调用另一个类的成员函数?假设你想在类A里调用类B的函数int f(x),两种办法:(1)class A::B 也就是说将B定义为A的父类, 这样你就可以自然的在A里面用f(x)了转载 2014-02-19 21:19:38 · 1086 阅读 · 0 评论 -
set容器
使用set和map容器,可以很容易地实现一个单词统计程序,这个程序只统计那些不在排除集中的单词void restricted_wc(ifstream &remove_file, map &word_count){ set excluded; // set to hold word we'll ignore string remove_word;原创 2013-11-05 15:23:05 · 531 阅读 · 0 评论 -
map容器
对于map容器,如果下标所表示的键在容器中不存在,则添加新元素,这一特性可以使程序惊人地简练://count number of times each word occurs in the inputmap word_count; //empty map from string to intwhile(cin>>word) ++word_count[word];原创 2013-11-04 19:54:29 · 599 阅读 · 0 评论 -
RIO包的领悟
RIO的无缓冲的输入输出函数ssize_t rio_readin(int fd, void *usrbuf, size_t n){ size_t nleft = n; ssize_t nread; char *bufp = usrbuf; while(nleft>0){ if((nread = read(fd,bufp,nleft))<0){ i原创 2013-10-29 11:11:36 · 1813 阅读 · 0 评论 -
C++的类成员
函数成员:1. 形参:A. 函数的形参可以是指针。在被调用函数中,对形参指针做修改并不影响实参的值,但是对形参指针所指向对象的修改将会影响实际的值。B. 实参是大型对象时,复制对象所付出的的时间和存储空间代价往往过大。对于这种情况形参应该定义成为引用或指针类型。C. 如果使用引用形参的唯一目的是避免复制参数,则应该将形参定义为const引用。D. ??const引用和原创 2014-03-04 16:13:07 · 732 阅读 · 0 评论 -
C++容器的实现
现在的面试经常问到vector或queue怎么实现,好烦啊。由于刚刚看了迭代器设计模式一文,文中讲解了Java Collection Framework的框架,它们都实现了下面这个接口:所以,可以依靠这个接口实现我们自己的C++的容器类,有时间一定试一试,顺便与STL做一些比较。具体拿出其中的一个方法,比如iterator()方法来阐述一下如何实现。首先我们定义一个Iterat原创 2014-03-05 15:03:11 · 667 阅读 · 0 评论 -
C++成员函数返回对象的引用
在C++类的成员函数中,包含了一个隐含的this指针。一般情况下,并不会显示地使用this指针,即通过”this->XXX“来使用类的成员。但是在成员函数返回对该调用函数的对象的引用时,会显示的使用this。为什么要返回调用该函数的对象的引用呢?C++ Primer 4里说用户希望能将几个操作连接成一个独立的表达式,例如下面:myScreen.move(4,0);myScreen.set原创 2014-03-08 15:54:17 · 2464 阅读 · 0 评论 -
抽象工厂模式和工厂方法
一个简单的工厂模式,使用new原创 2014-04-05 19:44:05 · 592 阅读 · 0 评论