自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 C++条款:复制对象时应事无巨细 3/55

复制对象时应事无巨细Copy allparts of an object如果你声明自己的copy函数,意思就是告诉编译器你并不喜欢缺省实现中的某些行为。编译器仿佛被冒犯似的,会以一种奇怪的方式回敬:当你的实现代码几乎必然出错时却不告诉你。考虑一个class用来表现顾客,其中手工写出copy函数,使得外界对他们的调用会被记录下来(logged)void logCall(const...

2019-03-25 18:47:39 238

原创 C++条款 2/54

条款02 尽量以const,enum,inline替换#define“宁可以编译器替换预处理器”比较好预处理器:最常见为C预处理器,采用"#"为行首的指示,根据用户定义的规则,进行简单的词法单元替换。典型的词法预处理器产生宏替换,包含其他文件的文本,并且条件性地编译或者包含文件。当你做出#define ASPECT_RATIO 1.653意味着所有的ASPECT_RATIO 都...

2019-03-24 09:45:30 310

原创 C++条款 宁以non-member、non-friend替换menber函数 14/55

宁以non-member、non-friend替换menber函数Prefer non-member non-friend functions to member functions想想有个class用来表示网页浏览器。在这个class可能提供的众多函数中,有一些用来清除下载元素高速缓冲区、清除访问过的URLs的历史记录、以及移除系统中的所有cookies:class WebBrow...

2019-04-09 21:00:46 446

原创 C++条款 将成员变量声明为private 13/55

将成员变量声明为privateDeclare date members private首先带你看看为什么成员变量不该是public,然后让你看看所有反对public成员变量的论点同样适用于protected成员变量。最后导出一个结论:成员变量应该是private。获得这个结论,本条款就大功告成了。让我们从语法一致性开始。如果成员变量不是public,客户唯一能够访问对象的办法就是通过成...

2019-04-06 16:11:20 274

原创 C++条款 必须返回对象时,别妄想返回其reference 12/55

必须返回对象时,别妄想返回其referenceDon't try to return a reference when you musst return an object一旦程序员领悟了pass-by-value的效率牵连层面,往往变成十字军战士,一心一意根除pass-by-value带来的种种邪恶。在坚定追求pass-by-reference的纯度中,他们一定会犯下一个致命错误:开始传...

2019-04-06 14:41:06 254

原创 C++条款 宁以pass-by-reference-to-const替换pass-by-value 11/55

宁以pass-by-reference-to-const替换pass-by-valuePrefer pass-by-referenct-to-const to pass-by-value缺省情况下C++以by value方式传递对象至(或来自)函数。除非你另外指定,否则函数参数都是以实际实参文件的复件为初值,而调用端所获得的亦是函数返回值的一个复件。这些复件由对象的copy构造函数产出,这...

2019-04-03 21:01:41 225

原创 C++条款 设计class犹如设计type 10/55

设计class犹如设计typeTreat class design as type designC++就像在其他OOP(面向对象编程)一样,当你定义一个新class,也就定义了一个新type。身为C++程序员,你的许多时间主要用来扩张你的类型系统(type syetem)。这意味着你并不只是class设计者,还是type设计者。重载(overloading)函数和操作符、控制内存的分配和归...

2019-04-02 19:02:44 200

原创 C++条款 让接口容易被正确使用,不易被误用 9/55

让接口容易被正确使用,不易被误用Make interfaces easy to use correctly and hard to use incorrectly若客户企图把事情做好,他们想要正确使用你的接口,这种情况下如果他们对任何其中一个接口的用法不正确,你至少也得负一部分责任。欲开发一个“容易被正确使用,不易被误用”的接口,首先必须考虑客户可能做出什么样的错误。假设你为一个用来表现日...

2019-04-01 21:33:50 215

原创 C++条款 以独立的语句将newed对象置入智能指针 8/55

以独立的语句将newed对象置入智能指针Store newed objects in smartpointers in standalone statements假设我们有个函数用来揭示处理程序的优先权,另一个函数用来在某动态分配所得的Widget上进行某些带有优先权的处理:int priority();void processWidget(std::tr1::shared_...

2019-03-31 13:03:25 151

原创 C++条款:成对使用new和delete时要采取相同形式 7/55

成对使用new和delete时要采取相同形式Use the same form in corresponding uses of new and delete先思考:以下动作有什么错?std::string* stringArray = new std::string[100];...delete stringArray;看起来井然有序,使用了new,也搭配了delete。但...

2019-03-29 20:13:48 176

原创 C++条款 在资源管理类中提供对原始资源的访问 6/55

在资源管理类中提供对原始资源的访问Provide access to raw resources in resource-managing classes资源管理类很值得我们去使用,是我们对抗资源泄漏的堡垒。排除此等泄漏是良好设计系统的根本性质。但尽管如此,仍有很多APIs直接指涉资源,所以除非你永不录用这样的APIs,否则只得绕过资源管理对象直接访问原始资源。举个例子,之前的条款...

2019-03-28 21:15:31 301

原创 C++条款 在资源管理类中小心copying行为

在资源管理类中小心copying行为Think carefully about copying behavior in resource-managing classes上个条款中,我们导入这样的观念:“资源取得时机便是初始化时机”(RAII),也描述了auto_ptr和tr1::shared_ptr如何将这个观念表现在heap-based资源上。然而并非所有资源都是heap-based,...

2019-03-27 20:54:47 308

原创 C++条款:以对象管理资源 4/55

以对象管理资源Use objects to manage resources假设我们使用一个用来塑模投资行为(股票、债券等等)的程序库,其中各式各样的投资类型继承自一个root class Investment:class Investment{...}这个程序库通过一个工厂函数(factory function)供应我们某特定的Investment对象:Investmen...

2019-03-26 16:25:13 153

原创 函数探幽(3) --引用(3)

3.1.将引用用于结构 引用非常适合用于结构和类,而引入引用的目的也是为了用于这些类型。 有如下结构定义:struct free_throws{ std;;string name; int made; int attempts; float percent;};//则可以这样编写函数原型:void set_pc(free_throws & ft);//如

2017-11-07 22:05:23 490 4

原创 函数探幽(2) --引用(2)

2.1.1.将引用用作函数参数 与按值传递不同的是,传递引用,函数将可以使用原始数据,似乎与传递指针有着相同的作用。int wallet1 = 400;int wallet2 = 500;cout<<"wallet1 = $"<<wallet1;cout<<"wallet2 = $"<<wallet2<<endl;swap(wallet1, wallet2); //调用cout<

2017-11-06 15:31:59 285

原创 函数探幽(1) --引用(1)

1.引用变量 引用是已定义的变量的别名(另一个名称)。如:有一变量x,而y作为变量x的引用,则可以交替使用x和y来表示该变量。就像有两个单词表示同一个意思。1.1.1.创建引用变量 在c++中,&符号除了用来指示变量的地址外,&的另一个含义就是用来声明引用。例:int cats;int & tomcats =cats;其中,&不是地址运算符,而是类型标识符的一部分。上述

2017-11-03 22:53:30 350

原创 浅析指针与const

*   const用于指针有着一些微妙的地方,也有着比较复杂,短时间难以理解的地方,所以就此详细探讨一番。让指针指向一个常量对象,这样可以防止使用该指针来修改所指向的值     int age=39;const int * pt = &age; *pt的值为const,对pt而言,这个值(age)是常量,但并不意味着它所指向的值就是一个常量,可以通过修改age变量来修改age的值。   这

2017-10-02 09:53:41 442

原创 浅谈模板类vector和array

在这里对模板类做非常非常简单的总结,以便于自己需要时有货可查。模板类vector ① 是一种动态数组,可在运行阶段设置vector对象的长度,也可以在末尾添加数据,在中间插入数据 ② 使用new和delete来管理内存,但是是自动执行这两个操作的。 ③ 必须 #include<vector> 和包含在名称空间std中 ④ 简单使用:vector<typeName> vb(n_elem);

2017-09-11 23:22:32 560

原创 C++文件读写操作(一) 逐字符读取文件

//1.打开一个文件//2.逐个字符地读取该文件,直到文件末尾//3.指出该文件中包含多少个字符#include<iostream>#include<fstream>#include<cstdlib>const int Arsize = 60;int main() { using namespace std; char c, fileName[Arsize];

2017-09-08 19:39:33 20956 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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