c++
文章平均质量分 75
罗磐
这个作者很懒,什么都没留下…
展开
-
effective c++-资源管理
条款13:以对象管理资源(一)使用RAIIa) 使用RAII(resource acquisition is initialization)(资源获取时机就是初始化时机),即在构造函数中获取资源,在析构函数中释放资源。自己编写资源管理类时,要加上引用计数,引用计数不为0时,不能释放对象,不加引用计数在多线程下会产生析构的竞态。(二)C++ RAII应用实例:用于管理资源的三个智原创 2016-11-10 22:12:09 · 370 阅读 · 0 评论 -
STL-容器
0.容器的概观与分类数据结构:研究数据的特定排列方式,以利于查找或排序或其他目的。(定义的真好)STL容器是将运用最广的一些数据结构实现出来。1.vectorvector的实现技术的关键在于:1、vector对大小的控制;2、重新配置时的数据移动效率。原创 2015-12-19 14:02:50 · 686 阅读 · 0 评论 -
STL-迭代器和traits编程技法
迭代器概念和traits编程技法迭代器的概念:迭代器完成了*、--->取值功能,++,- -等遍历功能。这种功能的完成,使算法可以独立于具体容器(不同的容器的迭代器的具体实现是不一样的,但这些迭代器对算法,程序提供的对外接口是一致的)。 其他知识点——智能指针auto_ptr:与普通指针一样,不同点在于智能指针在指针生命周期到的时候(超出作用域范围),会自动释放内存,而无须dele原创 2016-08-14 16:06:02 · 406 阅读 · 0 评论 -
STL-仿函数
仿函数 要将某组操作作为参数,有两种方法:1.将这组操作设计为函数,然后传函数指针;2.将这组操作设计为仿函数,传仿函数对象。 仿函数法概念:重载了 ( ) 运算符的类class stl仿函数定义:stl中定义了一元、二元仿函数。凡自定义的仿函数继承了一元、二元仿函数,就会成为它们那种类型,由此就可以被stl中的算法,容器等等所接纳(那些算法和容器都是以一元、二元仿函数原创 2016-08-14 16:11:30 · 492 阅读 · 0 评论 -
STL-空间配置器
1.空间配置器的标准接口#ifndef JJALLOC_H#define JJALLOC_H#include //for placement new #include //for ptrdiff_t,size_t#include //for exit()#include //for UINT_MAX十进制的最大值 #include //for cerrnamespa原创 2015-12-10 11:52:44 · 1131 阅读 · 0 评论 -
object model-构造函数语意学
1.默认Constructor的构建操作以下四种情况类会被生成“有用的”默认构造函数(nontrivial default constructor)a.一个class,带有默认构造函数的成员对象(带有default constructor 的 Member class object)#includeusing namespace std;class Foo原创 2015-11-17 19:56:24 · 1036 阅读 · 0 评论 -
object model-Function 语意学
0.member的各种调用方式a.nonstatic member functions(非静态成员函数)好吧,个人觉得作者自己是非常懂的,但是他讲出来的时候,感觉真的好混乱。通常都是给一个例子,自己体悟,做总结的那些话,总是不放在最显眼的位置。让人抓不到重点。歪果仁都是这么随性吗,讲到哪儿是哪儿辨析member function 和nonmember fun原创 2015-11-23 22:11:28 · 541 阅读 · 0 评论 -
object model-构造、解构、拷贝语意学
0.基础恶补a.重写和重载概念辨析重写:子类的方法覆盖父类的方法,要求方法名、参数都相同重载:在同一个类中有两个及以上的方法,拥有相同的方法名,但参数却不同b.纯虚函数虚函数是为了重载和多态的需要,子类中可以重写或不重写该函数;纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的interfac原创 2015-12-01 11:00:52 · 891 阅读 · 0 评论 -
object model-关于对象
c++对象模型1.对象的存储模型a) 对象的构成i. 类中包含static、nostatic成员变量和static、nostatic、virtual成员函数。在对象中仅仅存放【nostatic成员变量】和指向virtual成员函数的表的【虚表指针】以及一个【type_info对象实际类型】,static成员自然存储在全局静态区,而普通成员函数,则会以Point::float x()原创 2016-08-16 16:34:29 · 733 阅读 · 0 评论 -
c++ base-操作符重载
操作符重载包括两种形式类成员函数实现操作符重载和友元函数实现操作符重载之所以是这两种,是因为只有类的成员函数和友元函数才能访问类的私有变量,而显然操作符重载时,需要操作类的成员数据,如果成员数据是私有的,那么要么重载方法是类的成员函数,要么是类的友元函数,要么专门写一堆操作成员函数来实现(非成员函数非友元函数的重载操作符函数)来访问类的私有变量。a.类成员函数实现操作符重载原创 2016-08-15 09:59:29 · 502 阅读 · 0 评论 -
c++ base-基本语法【暂】
1.宏定义和展开主要是带参数的宏替换,要注意括号a) 宏定义简单的宏定义#define PI 3.1415926带参数的宏定义#define A(x) x*x 在A(x)处展开x*xb) 宏定义优点i. 【方便程序的修改】原创 2016-08-14 16:01:36 · 3679 阅读 · 0 评论 -
c++ base-面向对象特性
1.封装、继承、多态a) 封装:【在c++中的具体表现就是把一个具体的事物封装成类】,并用private、protected、private等关键字修饰类成员,隐藏细节,使代码模快化b) 继承:【使用现有类的所有功能】,可以分为单一继承和多重继承。继承方式分为public、protected、private。Class默认private继承,struct默认public继承。(原创 2016-08-14 15:52:02 · 1694 阅读 · 0 评论 -
effective c++-构造/析构/赋值运算
条款05:了解c++默默编写并调用哪些函数(一)c++默认产生a) 当程序员没有明确编写以下四个函数时。C++编译器会自动添加构造函数、复制构造函数、析构函数、赋值运算操作四个默认函数。这四个函数均是public的inline型的。若自己已经编写了上面四个中的某几个,那么编写的那几个,编译器就不会再自动生成了。(二)四个函数的调用时机a) 构原创 2016-11-10 11:35:49 · 413 阅读 · 0 评论 -
effective c++-让自己习惯c++
02:尽量用const,enum,inline替换define(一)【忠告】a) 对于常量,用const和enum代替defineb) 对于形似函数,用inline代替define(二)尽量替换掉define的原因:a) define A 1.63出错时,报1.63出错;const int A=1.63出错时,报A出错。显然报变量名出错更加容易调试原创 2016-11-09 16:52:50 · 334 阅读 · 0 评论 -
c++ base-内存管理
1.变量a) 静态变量和全局变量i. 全局变量与局部变量:1. 全局变量:存储在(非)初始化数据段(全局静态区)中;作用域是可以被别的文件引用extern关键字;生命周期是整个程序2. 局部变量:存储在定义自己函数体的栈中;作用域是只对本函数体可见;生命周期是函数体ii. 静态变量与非静态变量:原创 2016-08-14 15:28:03 · 559 阅读 · 0 评论