随笔分类 - 2-C++深度解析教程
摘要:C++深度解析教程引言 专题一:C到C++的升级 第1课 学习 C++ 的意义 第2课 C 到 C++ 的升级(变量的定义、register关键字、重命名全局变量名、struct关键字的加强、标识符的类型) 第3课 进化后的 const分析(const) 第4课 布尔类型和引用(bool、三目运算符
阅读全文
摘要:1.动态内存申请一定成功吗? (1)问题:动态内存申请一定成功吗? (2)常见的动态内存分配代码: C代码: C++代码: (3)必须知道的事实! malloc函数申请失败时返回NULL值 new关键字申请失败时(根据编译器的不同) 返回NULL值 抛出 std::bad_alloc 异常 (4)问
阅读全文
摘要:1.异常规格说明 (1)问题:如何判断一个函数是否会抛出异常,以及抛出哪些异常? (2)异常规格说明 C++提供语法用于声明函数所抛出的异常 异常声明作为函数声明的修饰符,写在参数列表后面 (3)异常规格说明的意义: 提示函数的调用者必须做好异常处理的准备 提示函数的维护者不要抛出其它异常 异常规格
阅读全文
摘要:1.异常的最终处理 (1)问题:如果在main函数中抛出异常会发生什么?如果异常不处理,最后会传到哪里? (2)下面的代码的输出什么? 编程实验:异常的最终处理? #include <iostream> using namespace std; class Test { public: Test()
阅读全文
摘要:1. “经典”C++语言 (1)本课程学习的是经典C++语言 (2)C++98/03标准在实际工程中的常用特性(C++ 98 标准、C++ 03 标准、C++ 11 标准、C++ 14 标准、C++ 17 标准) (3)大多数企业的产品开发中需要使用的C++技能 2. 未来学习之路 (1)横向学习(
阅读全文
摘要:1. 遗失的关键字:mutable (1)mutable关键字 ①mutable是为了突破const函数的限制而设计的 ②mutable成员变量将永远处于可改变的状态 ③mutable在实际的项目开发中被严禁滥用 (2)深入分析mutable ①mutable成员变量破坏了只读对象的内部状态 ②co
阅读全文
摘要:1. typename的前世今生 (1)定义模板时使用class的历史原因 ①早期的C++直接复用class关键字来定义模板 ②但是泛型编程针对的不只是类类型 ③class关键字的复用使得代码出现二义性 (2)typename诞生的直接诱因 ①自定义类类型内部的嵌套类型 ②不同类中的同一个标识符可能
阅读全文
摘要:1. 指针的判别:判断一个变量是不是指针 (1)拾遗 ①C++中仍然支持C语言中的可变参数函数 ②C++编译器的匹配调用优先级:重载函数>函数模板>变参函数 (2)思路 ①将变量分为两类:指针 VS 非指针 ②编写函数: 指针变量调用时返回true 非指针变量调用时返回false (3)函数模板与变
阅读全文
摘要:1. 类型识别 (1)在面向对象中可能出现下面的情况 ①基类指针指向子类对象 ②基类引用成为子类对象的别名 ▲静态类型——变量(对象)自身的类型(定义变量类型时类型或参数类型) ▲动态类型——指针(引用)所指向的对象的实际类型 (2)基类指针转子类指针: ①示例:Derived* d = stati
阅读全文
摘要:1. 关于动态内存分配 (1)new和malloc的区别 区别 new malloc 是否是关键字 关键字,是C++的一部分。被所有的C++编译器支持。 由C库提供的函数,注意是函数,而不是关键字,要依赖C库(cstdlib),在某些系统开发(如嵌入式)中可能不能调用。 分配单位 以具体类型为单位
阅读全文