码迷,mamicode.com
首页 > 其他好文 > 详细

noobSTL-1-配置器-1

时间:2020-02-22 23:48:31      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:无法   执行   列表   技术   而不是   you   一个   异常   bst   

noobSTL-1-配置器-1

1.要点分析

1.1 可能让你困惑的C++语法

组态

即配置。

临时对象

一种无名对象。有时候会刻意地制造临时对象。

静态常量整数成员在class内部直接初始化

const成员:只能在构造函数后的初始化列表中初始化(C++98)。
C++11提供了类内初始化,因此内类常量可在声明类时进行类内初始化,因此该类内常量的作用域属于类级,即该类的所有对象均具有同一个值。

static成员:初始化在类外,且不能加static修饰。

const static成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化,也可以像static在类外初始化。

increment/decrement/dereference 操作符

increment 自增操作符 ++

decrement 自减操作符 --

dereference 取值(解引用)操作符 *

前闭后开区间

[ )

function call 操作符

operator ()

函数指针无法保持有自己的状态,因此对某个class进行operator ()重载,使它成为一个仿函数。

1.2 需要复习的点

cerr

标准库定义了4个IO对象,处理输入时使用命名为cin的istream类型对象,这个对象也成为标准输入。处理输出时使用命名为cout的ostream类型对象,这个对象也称为标准输出。标准库还定义了另外两个ostream对象,分别命名为cerr和clog。cerr对象又叫标准错误,通常用来输出警告和错误信息给程序的使用者,而clog对象用于产生程序执行的一般信息。一般情况下,系统将这些对象与执行窗口联系起来,这样,当我们从cin读入时,数据从执行程序的窗口读入,当写到cout、cerr、clog时,输出写至同一窗口。运行程序时,大部分操作系统都提供了重定向输入或者输出流的方法。利用重定向可以将这些流与所选择的文件联系起来。

::

作用域限定符

类作用域,用来标明类的变量、函数。

命名空间作用域,用来注明所使用的类、函数属于哪一个命名空间的。

全局作用域,用来区分局部、全局的。
在STL中 主要出现于::new,::operator new。

new、operator new和placement new

new(也称作new operator),是new 操作符,不可重载。
new operator实际上执行了以下三个步骤:
1、调用operator new分配内存(后面要说的第二种new),如果类本身定义了operator new,那么会调用类自己的operator new,而不是全局的;
2、调用A的构造函数A::A(int);
3、返回相应的指针。

operator new不调用构造函数,而仅仅分配内存,有两个版本,前者抛出异常,后者当失败时不抛出异常,而是直接返回。
operator new是 operator 函数,与operator +等函数类似,可以被重载,operator new一般在类中进行重载。在全局重载容易造成程序崩溃,因为全局的::operator new 负责整个程序运行期间的堆空间的分配,重载全局::operator new 须慎之又慎!

placement new仅在一个已经分配好的内存指针上调用构造函数。

POD

POD,全称plain old data,plain代表它是一个普通类型,old代表它可以与c兼容,可以使用比如memcpy()这类c中最原始函数进行操作。C++11中把POD分为了两个基本概念的集合,即:平凡的(trival)和标准布局的(standard layout)。
C++11 POD类型

traits

C++ traits技术浅谈

noobSTL-1-配置器-1

标签:无法   执行   列表   技术   而不是   you   一个   异常   bst   

原文地址:https://www.cnblogs.com/AAAHQZ/p/12347920.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!