随笔分类 - 01.C++
1
摘要:virtal Virtual是C++ OO机制中很重要的一个关键字。只要是学过C的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类D
阅读全文
摘要:指针数组与指向数组的指针 1、int ( a)[10] 指向数组的指针 a是一个二级指针,可认为是一个二维数组的首地址,指向一个一维数组,数组存储了10个int数据。 2、int a[10] 指针数组 a是一个一级指针,是数组的首地址,指向一个int指针数据,数组存了10个int指针
阅读全文
摘要:C++学习笔记 1、使用C++11的标准来编译C++要添加 std=c++11参数(gcc版本要大于4.8) 2、输入EOF 3、引用初始化 普通引用只能用一个左值(对象)进行初始化,因为只能引用一个对象。 const 引用可以用一个右值进行初始化 4、man命令来查看类的成员 5、使用标准库的类型
阅读全文
摘要:动态内存 shared_ptr版本 c++ shared_ptr gen_vector(const size_t &size) { return make_shared (size, 0); } void get_data(shared_ptr ptr) { auto iter = ptr begi
阅读全文
摘要:c++ 动态内存 StrBlob.h StrBlob.cpp 感觉StrBlobPtr就是强行使用weak_ptr,并没有实际的用途,除非StrBlob对象销毁了,shared_ptr指针data销毁了,weak_ptr指针w_ptr的check操作才会起到作用,但是不明白为什么不直接使用StrBl
阅读全文
摘要:TextQuery程序 我写的第一个版本 返回的是map这个数据量很大,效率低下。 TextQuery.h TextQuery.cpp 这里用到了set{line_cnt}来构造一个匿名的对象,赋值给map。但是不能用set (line_cnt),因为set没有有参数的构造函数,有参数的也是拷贝的那
阅读全文
摘要:动态内存 动态数组 习题12.23 c++ //连接字符串到动态数组 char c = new char "20" ; char a[] = "hello "; char b[] = "world"; strcopy(c, a); strcopy(c+strlen(a), b); cout
阅读全文
摘要:拷贝构造函数、拷贝运算符、析构函数 拷贝构造函数、拷贝运算符、析构函数 定义行为像值的类 class HasPtr{ public: HasPtr(const string &s = string()):ps(new string(s)), i(0) { cout<<"HasPtr(const st
阅读全文
摘要:struct/enum/union加typedef与不加typedef 匿名结构体 struct { int a; int b; } v; // 这里表示定义了一个结构体的变量v,且结构体类型没有名字,后续不能再定义结构体,除非又把结构体写一遍。 有名字的结构体 - 直接定义变量 struct st
阅读全文
摘要:c++ StrVec等效vector\的类 知识点 1. 静态成员变量要在类外定义和初始化 2. allocator类是使用和uninitialized_copy的配合使用,实现string空间的分配和strings数据的拷贝(拷贝string的时候调用的string的拷贝构造函数,string的拷
阅读全文
摘要:子类与父类之间的类型转换 先给一段代码 1、对象类型不存在类型转换 2、子类的指针或引用转为父类的指针或引用:子类 父类 不是子类的指针或引用就能转为父类的指针或引用,前提条件是子类的指针或引用在当前域(域内:类体类 成员函数和友元函数 域外:类体外)能够访问访问父类的public的成员,因为父类对
阅读全文
摘要:汇编代码看内存分配 (1). 程序运行时分为存储区域分为 |存储区域 | 存储内容 | extra | | | | | |代码区 |存放代码指令,包括除字符串常量的字面值 | | |静态存储区 |存放静态变量和全局变量 |执行main之前就分配好了,系统回收| |字符串常量区 |存放字符串常量 |执
阅读全文
摘要:c++ Message与Folder 拷贝 析构(没有动态空间的类) 1、两个类里边分别保存一个对方的set表,当前类有拷贝或者销毁时需要更新另一个类的set表。 2、两个类都需要访问对方的private成员,所以两互相为友元,这样的两个类必须声明在同一个".h"文件中否则会导致先编译的类使用了使用
阅读全文
摘要:string类 将StrVec类的一些变量进行全局替换就能得到String类 1、string替换为char 2、str替换为c,strs替换为c 3、StrVec替换为String 4、 include \替换为 include\ StrVec和String就是类似的 1、都是保存指向元素的指针,
阅读全文
摘要:c++ 文本处理 1、使用sstream版本 (1)功能:截取第一列为1以后的数据,如下图,截取第5行(包括第5行)以后的数据,前面4行数据丢弃。 (2)代码:textProc.cc c++ include include include include using namespace std; i
阅读全文
摘要:程序编译后运行时的内存分配 太好的文章了,看到不得不转,转自: "http://blog.sina.com.cn/s/blog_5420e0000101a0w1.html" 一、编译时与运行时的内存情况 1.编译时不分配内存 编译时是不分配内存的。此时只是根据声明时的类型进行占位,到以后程序执行时分
阅读全文
摘要:字符串替换程序 C++ Primer 324页 使用replace和下标版本
阅读全文
摘要:istream_iterator/ostream_iterator
阅读全文
摘要:转义字符 (1)、行尾标识符 由于不同系统中定义行尾的标识符不一样,导致windows中的文件到linux或者mac中显示的时候会多一个^M (2)、用\r和\b实现屏幕时时刷新 ASCII码转义符 \b = 退格键(backspace) \r = 回车键(carrige return) 例如, 假
阅读全文
1