
C/C++
Xefvan
这个作者很懒,什么都没留下…
展开
-
有关Function Try Block的法则
法则1:构造函数的function try block处理程序只能用于转化(translate)从基类或成员子对象的构造函数抛出异常(也可能做一些相应的记录工作,或其它某种附带性的工作,以响应构造失败)。此外没有什么作用。例如:class X : Y{private: T* t_; Z* z_;public: X() try : Y(/* */)原创 2017-07-24 18:46:32 · 1162 阅读 · 0 评论 -
《Effective Modern C++》读书笔记(4) -- 尽量使用auto来显式类型声明
写了三篇,发现还是有点啰嗦了,所以下面的笔记改的更为简洁些,更多的是记载自己对这本书的理解和运用。这节包括的内容有:autostd::function前言在C或者C++这类语言中,声明变量的使用通常需要类型声明。例如:int a = 10; // 声明一个整形变量a,其值为10然而有时候我们通常只声明,不定义。例如:int a; // 声明一个整形变量a但是通原创 2017-06-20 21:08:59 · 539 阅读 · 0 评论 -
《Effective Modern C++》读书笔记(5) -- 尽量使用nullptr而不使用0和NULL
前言在之前看《C++ primer》一书,有关nullptr的解释已经很清楚了,这里有必要再整理一下。0和NULL在C++11之前包括C,都会用到一个名为NULL的预处理器来给指针赋值,这个变量在头文件中cstdlib中定义,它的值就是0。我们都知道0是整形,不是指针。// before C++11#define NULL 0// since C++11#define NULL nullptr在原创 2017-06-22 20:24:21 · 710 阅读 · 0 评论 -
Boosst.assert库的简单尝试
对比C++标准库中的assert,Boost.assert强化了原始的运行时assert宏,static_assert库提供了静态断言(编译期诊断),而lightweight_test和test库则构建了完整的单元测试框架。这里写的是运行时assert宏基本用法assert库定义了两个断言宏#define BOOST_ASSERT(expr) a原创 2017-06-28 21:38:52 · 586 阅读 · 0 评论 -
《Effective Modern C++》读书笔记(3) -- 明白decltype(understand decltype)
前言decltype是一个神奇的创造。给它一个name或者expression,它将告诉你name或者expression的类型。正如书中写到的 decltype typically parrots back the exact type of the name or expression you give itdecltype的基本用法有以下两种: decltype(entity )原创 2017-06-16 11:52:54 · 407 阅读 · 0 评论 -
《Effective Modern C++》读书笔记(2) -- auto类型推导(auto type deduction)
模板类型推导涉及模板(template),函数(functinos)和参数(parmeters),但是auto并没有处理处理这些问题。auto类型推导auto作为C++11新添加的特性之一,很强大,即便有些许不足,但是也是瑕不掩瑜。对于auto而言,它的强大之处在于类型推导(type deduce),因此既然是推导,那么它就不能像普通的变量一样,只声明不定义,例如:int a;原创 2017-05-18 12:52:56 · 608 阅读 · 0 评论 -
《Effective Modern C++》读书笔记(1) -- 模板类型推导(template type deduction)
前段时间看了《Effective Modern C++》这本书,收获颇多,书中讲解了许多C++11/14的特性,都是之前不太了解或者模糊的,看了之后茅塞顿开,强烈建议C++学习者看一看。现在是第二遍,打算把之前看的总结一下,本文大量引用了原书的内容,如有不适,请提出。前言《Effective Modern C++》开头说到: C++98 had a single set of rules for原创 2017-05-14 13:10:01 · 716 阅读 · 0 评论 -
Big-Five: 析构函数,拷贝构造函数,移动构造函数,拷贝赋值操作和移动赋值操作
简介在C++11里,类有五个已经为你写好的特殊函数。它们是析构函数,拷贝构造函数,移动构造函数,拷贝赋值操作和移动赋值操作函数。这些就是Big-Five。在许多情况下,你可以接受编译器为五大操作提供的默认函数。但是,有时你不能这样做。析构函数(Destructor)当一个对象离开作用域或者遭到删除时,析构函数被调用。通常,析构函数的唯一职责就是释放在使用对象期间获取的任何资源。这包括通过调用dele翻译 2017-02-09 15:07:36 · 1524 阅读 · 0 评论 -
C++ typedef和typename关键字
前序在《STL源码解析》一书中看到了这样一段代码template <class ForwardIterator, class Size, class T, class T1>inline ForwardIterator __uninitialized_fill_n(ForwardIterator first, Size n, const T& x, T1*){ typedef typena原创 2016-10-13 12:40:18 · 1240 阅读 · 0 评论 -
C++类的初体验封装之构造函数(一)
前言在讲构造函数之前,我们先介绍什么是类,类的作用和类的定义什么是类类是一种复杂的数据结构,它是将各种不同的数据类型和数据的相关操作封装在一起的集合体。类的基本思想是数据抽象和封装。而类包含数据成员和成员函数原创 2016-09-09 15:23:54 · 918 阅读 · 0 评论 -
C++知识点(持续更新)
RAII机制为了管理内存等资源,C++程序员通常采用RAII机制(资源获取即初始化,Resource Acquisition Is Initialization),在使用资源的类的构造函数中申请资源,然后使用,最终在析构函数中释放资源(–《Boost程序库完全开发指南》)原创 2017-07-05 14:10:32 · 314 阅读 · 0 评论