C++ STL — 第3章 基本概念

本文介绍C++中命名空间std的使用方法及其包含的标准库头文件,并详细阐述了C++异常处理机制,包括预定义异常类型及如何定义自定义异常类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

namespace std:为了避免标志符冲突

三种使用方式:

    直接使用:std::cout << "hello" << std::endl;

    先声明后使用:

        using std::cout;

        using std::endl;

        cout << "hello" << endl;

     直接声明使用:

        std:using namespace std;

        cout << "hello" << endl;


头文件:header files

全部都在命名空间std内

#include <iostream>   //C++

#include <cstdlib>   //C library, is #include <stdlib.h>


#include <string> //C++

#include <cstring>  //C


异常处理:

string:异常检查比较严格

STL:求速度忽视异常,只考虑运行期异常



C++语言支持的exception:基类是exception

bad_alloc:new失败的时候抛出  <new>

bad_cast:dynamic_cast失败抛出  <typeinfo>

bad_typeid:typeid运行时类别   <typeinfo>

bad_exception:抛出了未预料的异常  <exception>


标准库异常:基类logic_error,程序中可以避免

invalid_argument:不合法的参数  <stdexcept>

length_error:长度超出最大的限制  <stdexcept>

out_of_range:如数组下标越界  <stdexcept>

domain_error  <stdexcept>


IO异常:ios_base::failure   <ios>


运行期间异常:继承自runtime_error

range_error:内部指令错误   <stdexcept>

overflow_error:算术溢出  <stdexcept>

underflow_error:  <stdexcept>


获取异常额外信息:

what() 函数,返回char*

1
2
3
4
try {
catch (const exception& e) {
    std::cout << e.what() << std::endl;
}


继承std::exception定义自己的异常类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace MySpace {
    class MyException : public std::exception {
    public:
        MyException(...) {} 
        virtual const char* what() const throw() {
           //...
        }     
    };
   
    void f() {
        ...
        throw MyException(...);
    }
}


内存分配器:负责内存分配和解除分配的对象

默认:new and delete


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值