
C++课堂(概念提前知)
文章平均质量分 70
P_ghost
坚实的基础 过硬的技术 创新的思维
展开
-
第1章 字符串
字符串是程序中经常使用的一种数据类型。串,顾名思义就是一些列单个元素的连接组合,那么字符串也就是由一系列单个字符连接而成。在上一堂课上,我们有一行代码是:std::cout"Hello world!"std::endl; 这行代码中,我给大家介绍了两个C++标准库对象以及使用方法。但是其中的"Hello world!"我没有给大家解释,其实这就是C++中的字符串字面量。 这里提到一个原创 2009-11-07 11:58:00 · 870 阅读 · 1 评论 -
第11章 定义抽象数据类型
定义抽象类型的目标:让自定义类型如何内置类型一样易用,其使用符合一般习惯。 确定类接口:当我们准备要编写一个抽象的时候(这里指的是使用类概念),我们首先要确定这个抽象的接口。我们的抽象类型是提供给客户(可能是自己)使用的,那么其接口应该从客户的使用上来考虑。例如,我们准备写一个窗口抽象,那么我们很容易就能够想到,客户可能对这个窗口进行移动、改变大小、显示、隐藏、关闭等等,这些动词就应该列入原创 2010-04-02 14:27:00 · 1037 阅读 · 0 评论 -
第7章 使用关联容器
新概念:关联容器 “键-值”对 关联容器,其名字一分为二(关联-容器)。那么首先它是一种容器,容器这个概念已经在前面的章节介绍过了,那么关联是什么意思呢?它作为容器,它就得存储一系列数据,但是它却和我们之前看到的所有容器都不同,它存储的数据和某种“键”具有关联性。这和我们前面的“索引”和值之间的关联有些类似,不同之处是,“索引”和值仅仅是暂时的关联,当容器发生变化的时候,这种关联就可能会失原创 2010-01-08 10:41:00 · 800 阅读 · 0 评论 -
第6章 使用库算法
新概念:迭代器适配器、标准库remove语义 迭代器适配器具有函数特性,它是用来产生迭代器的,而其所产生的迭代器是和调用迭代器适配器时所传递给它的参数相关的。换句话说就是它产生的迭代器是可以访问其参数中的类型的。例如:std::back_inserter 我这里所指的标准库remove语义是指std::remove系列的算法的语义。这些算法对一个容器中的元素进行操作,它是不会改变这原创 2009-12-25 10:40:00 · 804 阅读 · 0 评论 -
第5章 使用顺序容器并分析字符串
新概念:迭代器、容器索引和迭代器失效 迭代器也是一种自定义类对象。但它本身在数据结构中具有一定的语义,它是用来访问、遍历某种数据结构的工具。对于我们的容器而言,它就是一种访问容器的接口。根据对容器的访问权限(读、写)分为两种迭代器:const迭代器和非const迭代器。前面已经讲过const语义了,所以很容易想到const迭代器是用来对容器做只读操作的。 前面我们都使用索引去访问我原创 2009-12-18 13:04:00 · 689 阅读 · 0 评论 -
第4章 组织程序和数据
新概念:划分模块、函数(形参、实参、按值传参、引用传参、重载)、错误提示机制(异常)、结构体、类、独立编译(头文件、源文件、声明)、预编译处理 之前我们所见到的教材示例都的代码已经变得有一些庞大了。C++和其他语言一样,对于处理庞大的代码提供了分模块机制。所谓的划分模块就是将我们的程序中相对独立的功能和数据划分开,每个单独的模块尽量只完成相对单一的功能,然后将这些相对独立的模块组合起来形成原创 2009-12-11 10:50:00 · 806 阅读 · 0 评论 -
第9章 定义新类型
内置类型:C++语言核心内置了一些类型,对于这些类型的性质和特征都是在C++语言核心定义的,例如:int,double,float,char,bool等等。 自定义类型:C++语言提供给用户自己定义类型的能力,用户可以根据自己对事物的抽象编写相应的自定义类型。例如标准库的:std::string,std::ostream,std::vector等等都是C++标准库的自定义类型。 c原创 2010-02-06 15:02:00 · 855 阅读 · 0 评论 -
第8章 编写泛型函数
模板:前面我们已经用过了标准库的一些设施,例如std::vector。可以发现,通过使用传递不同的类型,我们能够创建承载不同类型的动态数组。C++为我们提供了这样将类型作为参数的机制,这就是模板。 模板函数:通过C++提供的模板机制,我们可以编写函数族。既然称为族,那么它就不是一个单独的函数个体,而是一个集体。当我们通过编写函数来实现某一个功能的时候,可能我们还需要编写另外一个函数实现同样原创 2010-01-30 13:46:00 · 868 阅读 · 0 评论 -
第3章 使用批量数据
新概念:连续输入的数据区分、字符串字面量连接、对象初始化、输入检测 连续输入是根据数据类型以及空白间隔来区分不同数据的。假设有这样一段代码:int i;std::string s;std::cin>>i>>s;我们输入的数据是:123abc,那么std::cin能够自动区分出这是两个数据,并将123赋给变量i,将abc赋给变量s。如果我们输入的数据是:123 456原创 2009-11-25 14:10:00 · 767 阅读 · 0 评论 -
第2章 循环和计数
这堂课的标题提出了两个概念:1、循环 2、计数。 所谓循环,其实就像一个圈。我们从一个点开始,沿着这个圈走,我们最终又会回到我们的起点,如果继续下去便是重复我们先前的路线。在代码中表现出来的形式就是,一段用做循环的代码,当其执行完一次之后会根据我们的循环次数来决定是否再执行一次。这里引入了一个循环次数的概念,回到我们的圈,假设我们设置循环次数为5,那我们就会沿着这个圈走5圈,当最后一原创 2009-11-13 10:45:00 · 1164 阅读 · 1 评论 -
第0章 初窥门径
以控制台程序为例:#include int main(){ // 在控制台屏幕输出Hello world!并换行 std::cout"Hello world!"std::endl; return 0;} 这是一个简单的控制台应用程序,运行结果是在控制台屏幕上输出Hello world!并换行。我们可以从这个程序来初窥C++编程门径。原创 2009-11-02 13:10:00 · 1135 阅读 · 1 评论 -
第12章 让对象像数值一样工作
自定义类产生的隐式类型转换:当构造函数有且仅有一个未指定默认值的参数的时候,可能会产生参数类型到自定义类型的隐式转换。例如:class Test{ int v_;public: Test(int i) : v_(i){} int GetV() const{return v_;}}; void fun(const Test& test){原创 2010-04-23 13:49:00 · 1059 阅读 · 2 评论