自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《Effective C++》条款27:尽量少做转型动作

C++中的四种新式转型:const_cast:常量性转除dynamic_cast:用来决定某对象是否归属继承体系中的某个类型reinterpret_cast:低级转型,如将pointer to int转型为intstatic_cast:强迫隐式转型,如将non-const转成const, int转为double,将void*转为typed指针,将pointer-to-base转为p

2018-01-16 11:36:58 198

原创 《Effective C++》条款21:必须返回对象时,别妄想返回其reference; 24:若所有参数皆需类型转换,请为此采用non-member函数

实现一个有理数类:class Rational {//friend const Rational operator* (const Rational& lhs, const Rational&rhs);//friend bool operator== (const Rational& lhs, const Rational&rhs);public: Rational(int

2018-01-12 14:23:23 188

原创 将智能指针作为函数输入参数的两个问题

1.考虑这样的processWidget函数声明:void processWidget(shared_ptr pw, int priority);当我们采取这样的方式调用:processWidget(new Widget, priority());显然是不能编译通过的,因为shared_ptr不接受通过new指针隐式的构造(explicit)所以这样写就能通过编译:processW

2018-01-11 10:51:58 12554 1

原创 《C++ Primer》第12章:动态内存

shared_ptr允许多个指针指向同一个对象,unique_ptr独占所指向的对象,用make_shared函数分配动态内存,返回对象的shared_ptr.程序使用动态内存的原因之一是需要在多个对象间共享数据, 自己直接管理内存的类与使用智能指针的类不同, 它们不能依赖类的对象拷贝、赋值和销毁操作的任何默认定义.week_ptr是一种不控制所指向对象生存期的智能指针,它指向由一个sha

2018-01-09 16:33:54 208

原创 《Effective C++》条款12:复制对象是勿忘其每一个成分

对于拷贝构造函数和拷贝赋值函数,如果决定自己定义,那么不要忘记调用父类的相应构造函数。因为如果没有调用,对于拷贝构造函数,编译器会去自动调用父类的default构造函数,那么父类的成员没有被成功从子类实例拷贝;对于拷贝赋值函数,编译器不会做额外的操作,意味着只有子类的部分被赋值,而父类的成员维持原状。如下代码子类中的拷贝构造函数和拷贝赋值函数,没有主动调用父类的相应函数:class Bas

2018-01-03 16:14:05 162

原创 《Effective C++ 》条款10:令operator=返回一个reference to *this

令operator=返回一个reference to *this.以实现连锁赋值(右结合形式的连锁赋值,不返回reference也可以实现,但每次赋值之后函数返回的时候,会额外调用拷贝构造来创建一个临时的对象)class Int {public: Int() : value(0){} Int(int i) : value(i) {} Int(const Int

2018-01-03 13:55:59 147

原创 实现一个String类

class MyString {public: MyString():len(0),data(NULL) { len = 0; data = new char[1]; data[0] = '\0'; } MyString(const char* str) { if (str == NULL) {

2018-01-02 11:06:41 272

原创 Effective C++ 第三版 学习

1. 匿名enum的作用,等同于静态常成员变量class GamePlayer {private: enum {NumTurns = 5}; int scores[NumTurns];};一般来说static const成员变量在类外进行定义:class CostEstimate {private: static const double FudgeFac

2017-12-29 10:23:54 159

原创 《Unix环境高级编程》准备apue.h

《Unix环境高级编程》的第一个程序1-1,编译报告找不到apue.h,解决方法:1. 从http://www.apuebook.com/code2e.html下载src.2e.tar.gz 放在/cygdrive/d/UnixProgramming/下2. 解压$ tar zxvf src.2e.tar.gz3. 进入解压目录,修改Make.defines.linux

2017-04-06 13:39:58 233

原创 《C++ Primer 第五版》学习笔记-第四章-表达式

1. ++a; //把值加1后直接返回改变了的运算对象(左值)a++; //返回原始对象的副本(右值)2. cout << *iter++ << endl; //++高于*,*(iter++)等价于cout << *iter << endl;++iter;3. 逗号运算符    首先对左侧表达式求值,然后将结果丢弃掉,返回右侧表达式的值。

2017-02-20 08:32:10 151

原创 《C++ Primer 第五版》学习笔记-第三章-字符串、向量和数组

1. string类型的size函数,返回值类型是size_type2. c++ 标准提供了一种范围for语句,可用于string, vector, 数组3. 在大多数表达式中,使用数组类型的对象其实是使用一个指向该数组首元素的指针4. C风格字符串和stringC风格字符串stringconst char[] =stri

2017-02-20 08:25:51 212

原创 《C++ Primer 第五版》学习笔记-第二章-变量和基本类型

1. C++提供了几种字符类型    char可以存放机器基本字符集中的任意字符对应的数字值    wchar_t可以存放机器最大扩展字符集中的任意一字符    char16_t和char32_t是Unicode字符,用于表示所有自然语言中字符的标准2. 字符型分为char, signed char, unsigned char.    char和signed char

2017-02-20 07:50:42 301

原创 set, shared_ptr, unique_ptr 传入可调用对象

multiset - 编译时已经知道函数类型multisetdecltype(compareIsbn)*> bookstore(compareIsbn);shared_ptr -- 运行时绑定shared_ptr sp1(&c, [c](){disconnection(&c);});unique_ptr - 编译时已经知道函数类型unique_ptr*>

2017-02-07 13:24:48 186

原创 修饰类成员函数的几个关键字:inline, const, explicit, static, virtual

修饰类成员函数的几个关键字:inline, const, explicit, static

2016-12-20 14:12:40 1186

原创 《C++ Primer 第五版》学习笔记-第一章-开始

1. 访问main函数返回值的方法:Linux: echo $?Windos:echo %ERRORLEVEL%2. 标准库定义了4个IO对象:istream对象 cinostream对象 cout(标准输出),cerr(警告和错误,无缓冲),clog(程序运行时的一般信息)3. 特殊的操纵符endl:结束当前行,并将与设备关联的缓冲区中的内容刷到设备中

2016-12-20 13:54:01 282

空空如也

空空如也

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

TA关注的人

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