C++标准程序库 学习笔记 第二章 && 第三章

来源:互联网 发布:fontawesome mac 编辑:程序博客网 时间:2024/05/21 22:48

第二章  C++及标准程序库简介

1.通过在成员名前加上 typename,可以告诉编译器将成员当作类型. C++规定,除了以typename修饰之外.template内的任何标识符号都被视为一个值而非一个型别.

template <class T>class MyClass{typename T::SubType *ptr;}; 

有typename 则指定T::SubType是一个类型,否则 它则 是一个值.


2.成员模板..
  就是在一个类里面,还继续用template..    所以在里面又可以匹配N多种类型..
template <class T>
class MyClass{
template <typename U>
void assign( U );    //U就可以很多类型了  仅供理解

};

template <class T>class MyClass{private:T m_value;public:template <class X>//这个形参类型够深奥!!  效果就是形参可以表示N多类型,然后再通过GetValue得到转换后的m_vlauevoid assign(const MyClass<X> &x){m_value = x.GetValue();}T GetValue(){return m_value;}};

-------------------------------------------------------------------------------------

第三章  一般概念

1. 命名空间

C++标准程序库中所有标识符都在std命名空间内.

2.异常类型

1所有异常,都派生自基类 exception.
 
1> 语言本身的异常
bad_alloc new失败时异常
bad_cast  多太转换失败时异常
bad_typeid 指针为0,为NULL时异常
bad_exception  异常规格之外的异常,该异常会调用 unexpected()
 
2>C++标准程序库发出的异常
总是派生自logic_error 
invalid_argument 无效参数异常
length_error 超越了长度极限
out_of_range 不在预期范围内
domain_error 专业领域内的异常
     I/O 标准程序库异常:
 ios_base::failure 数据流错误或遇到文件尾时异常

 
3>程序作用域之外发出的异常 
派生自 runtime_error  RE,运行时错误
range_error overflow_error underflow_error


  exception 是一个异常类  ,里面只有一个成员函数 what()
  抛出异常  throw out_of_range("out of range le");
不能抛出exception  只能抛出 logic_error及其子类, runtime_error及其子类


3 配置器

不懂,以后补上.

原创粉丝点击