net_assassin的专栏

知识改变命运,技术改变生活

C++ Primer 中文版 学习笔记(十七)

第十八章 特殊工具与技术 18.1. 优化内存分配 new 基于每个对象分配内存的事实可能会对某些类强加不可接受的运行时开销,这样的类可能需要使用用户级的类类型对象分配能够更快一些。这样的类使用的通用策略是,预先分配用于创建新对象的内存,需要时在预先分配的内存中构造每个新对象。如vecto...

2013-07-31 15:37:35

阅读数 1080

评论数 2

C++ Primer 中文版 学习笔记(十六)

第17章   用于大型程序的工具 1        大规模应用程序往往具有下列特殊要求: 更严格的正常运转时间以及更健壮的错误检测和错误处理。错误处理经常必须跨越独立开发的多个子系统进行。        ----异常处理,错误检测与处理分开能够用各种库(可能包含独立开发的库)构造程序。...

2013-07-31 15:02:51

阅读数 1208

评论数 0

C++异常处理

一、什么是异常处理         一句话:异常处理就是处理程序中的错误。 二、为什么需要异常处理,以及异常处理的基本思想         C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生...

2013-07-28 15:49:01

阅读数 545

评论数 0

C++ Primer 中文版 学习笔记(十五)

第16章  模板与泛型编程 1       2   函数模板  template int compare(const T &v1,const T &v2){ }   //模板形参不能为空 3   类模板      template          clas...

2013-07-26 20:02:54

阅读数 788

评论数 0

C++ Primer 中文版 学习笔记(十四)

第15章  面向对象编程 1        面向对象编程基于三个基本概念:数据抽象、继承和动态绑定。 2        继承层次共享共用的东西,仅仅特化本质上不同的东西。 3        定义为virtual的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为虚函数。 4...

2013-07-26 16:45:15

阅读数 864

评论数 0

裘宗燕:C/C++ 语言中的表达式求值

经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?” m = 1; n = m+++m++; 最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5: a = 4; cout  C++ 不是规定  要弄清这些,需要理解的...

2013-07-25 08:20:56

阅读数 873

评论数 0

C++ Primer 中文版 学习笔记(十三)

第14章  重载操作符与转换 1        重载操作符必须具有至少一个类类型或枚举类型的操作数。这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义 2        操作符重载成成员函数还是普通非成员函数的一些指导原则: a)        = 、[]、 ()、->...

2013-07-24 11:10:00

阅读数 2425

评论数 0

C++ Primer 中文版 学习笔记(十二)

第13章复制控制 1        复制构造函数、赋值操作符和析构函数总称为复制控制。 2        一种常见的情况需要类定义自己的复制控制成员是:类具有指针成员。(深拷贝、浅拷贝问题) 3        三法则:如果类需要析构函数,则它也需要赋值操作符和复制构造函数。 例外:如果基类为了将析...

2013-07-24 10:04:05

阅读数 2460

评论数 0

C++ Primer 中文版 学习笔记(十一)

第12章  类 1        数据抽象是一种依赖于接口和实现分离的编程(和设计)技术。封装时一项将低层次的元素组合起来形成新的、高层次实体的技术。 2        初始化const 或引用以及没有默认构造函数的类类型数据成员的唯一机会是在构造函数初始化列表中。 3        隐式类型转换...

2013-07-21 16:07:25

阅读数 2632

评论数 0

智能指针实现

namespace smart{ // 引用计数类. class smart_count { public: smart_count(int c = 0) : use_count(c) {} ~smart_count() {}  // 增加引用计数, 并返回计数值. int addref(...

2013-07-20 20:42:31

阅读数 2412

评论数 0

直接初始化与复制初始化

这是C++中所支持的两种初始化方式。  复制初始化使用=符号,而直接初始化将初始化式放在圆括号中。  (1)对于一般的内建类型,这两种初始化基本上没有区别。  int a(5);//直接初始化  int a=5;//复制初始化  int a=int (5);//直接初始化  (2)当用于类类型...

2013-07-19 11:21:06

阅读数 2297

评论数 0

为什么拷贝构造函数的形参必须是引用类型?

复制构造函数只有一个参数,由于在创建时传入的是同种类型的对象,所以一个很自然的想法是将该类型的对象作为参数,像这样: Sample (Sample a); 不幸的是,即使是这样朴实无华的声明也隐含了一个微妙的错误,呵,我们来看看:当某个时候需要以一个Sample对象的值来为一个...

2013-07-19 11:04:00

阅读数 2434

评论数 0

从一道题谈C++中构造函数调用构造函数

题目如下:问下列代码的打印结果为0吗? #include stdlib.h> #include iostream> using namespace std; struct CLS {     int m_i;     CLS( int i ) : m_i(...

2013-07-19 11:02:57

阅读数 673

评论数 0

如何只在heap上创建对象,如何只在stack上建立对象?

google面试题: 只能在堆上创建的对象,代码如下   class HeapOnly { public:     void destroy() const     {         delete this;     } private:     ~HeapO...

2013-07-19 11:01:38

阅读数 650

评论数 0

explicit构造函数

按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class String { String ( const char* p ); // 用C风格的字符串p作为初始化值 //… } String s1 = “hello”...

2013-07-19 11:00:13

阅读数 519

评论数 0

C++中友元详解

问题的提出   我们已知道类具备封装和信息隐 藏的特性。只有类的成员函数才能访问类的私有成员,程式中的其他函数是无法访问私有成员的。非成员函数能够访问类中的公有成员,但是假如将数据成员都定义 为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,特别是在对某些成员函数多次调用时,由于参...

2013-07-18 17:03:04

阅读数 545

评论数 0

隐式类类型转换

C++ primer 中有这么一句话:可以用单个实参来调用的构造函数定义了从形参类型到该类型的一个隐式转换。 这么解释: 比如有个类A的对象a的成员函数的参数应该是类A的对象,但是把一个别的类型B的对象b传进去了,而且这个对象b的类型恰好是A的单参数构造函数参数类型,这时系统就用这个b自作聪明...

2013-07-18 16:38:46

阅读数 478

评论数 0

C++编程实用技巧——专家讲述C++程序设计的窍门

从C转向C++ 对每个人来说,习惯C++需要一些时间,对于已经熟悉C的程序员来说,这个过程尤其令人苦恼。因为C是C++的子集,所有的C的技术都可以继续使用,但很多用起来又不太合适。例如,C++程序员会认为指针的指针看起来很古怪,他们会问:为什么不用指针的引用来代替呢? C是一种简单的语...

2013-07-18 10:05:58

阅读数 808

评论数 0

C++编程实用技巧 #32:尽可能地推迟变量的定义

是的,我们同意C语言中变量要放在模块头部定义的规定;但在C++中,还是取消这种做法吧,它没必要,不自然,而且昂贵。 还记得吗?如果定义了一个有构造函数和析构函数的类型的变量,当程序运行到变量定义之处时,必然面临构造的开销;当变量离开它的生命空间时,又要承担析构的开销。这意味着定义无用的变量必...

2013-07-18 10:03:01

阅读数 1408

评论数 0

c++ 类的前置声明

刚开始学习c++的人都会遇到这样的问题: 定义一个类 class A,这个类里面使用了类B的对象b,然后定义了一个类B,里面也包含了一个类A的对象a,就成了这样: 一编译,就出现了一个互包含的问题了,这时就有人跳出来说,这个问题的解决办法可以这样,在a.h文件中声明类B,然后使...

2013-07-18 09:46:14

阅读数 1998

评论数 2

提示
确定要删除当前文章?
取消 删除
关闭
关闭