吴裕雄--天生自然C++语言学习笔记:C++ 实例
摘要:C++ 实例 - 输出 "Hello, World!" #include using namespace std; int main() { cout using namespace std; int main() { int number; cout > number; cout using namespace std; in...
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 标准库
摘要:C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的、独立的、不属于任何类的函数组成的。函数库继承自 C 语言。 面向对象类库: 这个库是类及其相关函数的集合。 C++ 标准库包含了所有的 C 标准库,为了支持类型安全,做了一定的添加和修改。 标准函数库 标准函数库分为以下几类: 输入/输出 I/O 字符串和字符处理 数学 时间、日期和本地化 动态分配 其他 宽字符函数 面向对象...
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ STL 教程
摘要:C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。 C++ 标准模板库的核心包括以下三个组件: 容器(Containers) 容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。 算法(Algorithms...
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ Web 编程
摘要:什么是 CGI? 公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。 CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下: 公共网关接口(CGI),是一种用于外部网关程序与信息服务器(如 HTTP 服务器)对接的接口标准。 Web 浏览 点击一个超链接,浏览一个特定的网页或 URL,看看会发生什么。 浏览器联系上 HTTP Web
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 多线程
摘要:多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。 基于进程的多任务处理是程序的并发执行。 基于线程的多任务处理是同一程序的片段的并发执行。 多线程程序包含可以同时运行的两个或多个部分。这样的程序中的每个部分称为一个线程,每个线程定义了一个单独的执行路径。 创建一个 POSIX 线程: #include p...
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 信号处理
摘要:信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断。 有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些信号是定义在 C++ 头文件 中。 SIGABRT 程序的异常终止,如调用 abort。 SIGFPE 错误的算术运算,比如除以零...
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 预处理器
摘要:预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前。预处理指令不是 C++ 语句,所以它们不会以分号(;)结尾。 C++ 还支持很多预处理指令,比如 #include、#define、#if、#else、#line 等 #define 预处理指令用于创建符号常量。该符号常量通常称为宏,指令的一般 形式是: #
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 模板
摘要:模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。 每个容器都有一个单一的定义,比如 向量,可以定义许多不同类型的向量,比如 vector <int> 或 vector <string>。 模板函数定义的一般形式如下所示: template <class type> r
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 命名空间
摘要:假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。 同样的情况也出现在 C++ 应用程序中。例如,可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断所使用的是哪一个 xyz() 函数。 因此,引入了命名空间这个概念,专门用于
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 动态内存
摘要:栈:在函数内部声明的所有变量都将占用栈内存。 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。 可以使用特殊的运算符为给定类型的变量在运行时分配堆内的内存,这会返回所分配的空间地址。这种运算符即 new 运算符。 不再需要动态分配的内存空间,可以使用 delete 运算符,删除之前由 new 运算符分配的内存。 new 和 delete 运算符 下面是使用 new 运算符来为任意...
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 异常处理
摘要:异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。 异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。 throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。 catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常。 try
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 文件和流
摘要:如何从文件读取流和向文件写入流。这就需要用到 C++ 中另一个标准库 fstream,它定义了三个新的数据类型: ofstream 该数据类型表示输出文件流,用于创建文件并向文件写入信息。 ifstream 该数据类型表示输入文件流,用于从文件读取信息。 fstream 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 接口(抽象类)
摘要:接口描述了类的行为和功能,而不需要完成类的特定实现。 C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。 如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示: class Box { public: // 纯虚函数 virtual double getVolume() =
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 数据封装
摘要:所有的 C++ 程序都有以下两个基本要素: 程序语句(代码):这是程序中执行动作的部分,它们被称为函数。 程序数据:数据是程序的信息,会受到程序函数的影响。 封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即数据隐藏。 数据封装是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象是一种仅
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 数据抽象
摘要:数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。 数据抽象是一种依赖于接口和实现分离的编程(设计)技术。 它们向外界提供了大量用于操作对象数据的公共方法,也就是说,外界实际上并不清楚类的内部实现。 例如,程序可以调用 sort() 函数,而不需要知道函数中排序数据所用到的算法。实际上,函数排序的底层实现会因库的版本不同而有所差异,只要接口不变,函数调用就
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 多态
摘要:多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。 C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。 下面的实例中,基类 Shape 被派生为两个类,如下所示: #include <iostream> using namespace std; class Shape { protected: int width, heigh
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 重载运算符和重载函数
摘要:C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。 C++ 中的函数重载
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 继承
摘要:当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。 继承代表了 is a 关系。例如,哺乳动物是动物,狗是哺乳动物,因此,狗是动物,等等。 基类 & 派生类 一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类...
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 类 & 对象
摘要:C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。 类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。 类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。 键字 class...
阅读全文
吴裕雄--天生自然C++语言学习笔记:C++ 数据结构
摘要:C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项。 结构用于表示一条记录,假设想要跟踪图书馆中书本的动态,可能需要跟踪每本书的下列属性: Title :标题 Author :作者 Subject :类目 Book ID :书的 ID 为了定义结构,必须使用 struct 语句。struct 语句定义了一个包含多个
阅读全文