C++进阶
文章平均质量分 92
小米拍客光
喜欢IT,喜欢技术,嗨起来~~~~~~~~~~~~~~
展开
-
C++ 控制结构和函数(一) —— 控制结构
一个程序的语句往往并不仅限于线性顺序结构。在程序的执行过程中它可能被分成两支执行,可能重复某些语句,也可能根据一些判断结果而执行不同的语句。因此C++ 提供一些控制结构语句 (control structures) 来实现这些执行顺序。为了介绍程序的执行顺序,我们需要先介绍一个新概念:语句块(block of instructions)。一个语句块(A block of instructi原创 2016-06-21 14:27:11 · 235 阅读 · 0 评论 -
C++ 面向对象(三)—— 类之间的关系
友元函数(Friend functions)在前面的章节中我们已经看到了对class的不同成员存在3个层次的内部保护:public, protected 和 private。在成员为 protected 和 private的情况下,它们不能够被从所在的class以外的部分引用。然而,这个规则可以通过在一个class中使用关键字friend来绕过,这样我们可以允许一个外部函数获得访问clas原创 2016-06-21 14:35:01 · 328 阅读 · 0 评论 -
C++ 面向对象(二)—— 操作符重载
C++ 实现了在类(class)之间使用语言标准操作符,而不只是在基本数据类型之间使用。例如:int a, b, c;a = b + c;是有效操作,因为加号两边的变量都是基本数据类型。然而,我们是否可以进行下面的操作就不是那么显而易见了(它实际上是正确的):struct { char product [50]; float price; } a, b, c;a = b +原创 2016-06-21 14:34:19 · 294 阅读 · 0 评论 -
C++ 面向对象(一)—— 类(Classes)
类(class)是一种将数据和函数组织在同一个结构里的逻辑方法。定义类的关键字为class ,其功能与C语言中的struct类似,不同之处是class可以包含函数,而不像struct只能包含数据元素。类定义的形式是:[cpp] view plain copy class class_name { permission_label原创 2016-06-21 14:33:44 · 1152 阅读 · 0 评论 -
C++ 高级数据类型(六)—— 自定义数据类型
前面我们已经看到过一种用户(程序员)定义的数据类型:结构。除此之外,还有一些其它类型的用户自定义数据类型: 定义自己的数据类型 (typedef)C++ 允许我们在现有数据类型的基础上定义我们自己的数据类型。我们将用关键字typedef来实现这种定义,它的形式是:typedef existing_type new_type_name;这里 existing_原创 2016-06-21 14:33:13 · 280 阅读 · 0 评论 -
C++ 高级数据类型(五)—— 数据结构
一个数据结构是组合到同一定义下的一组不同类型的数据,各个数据类型的长度可能不同。它的形式是:struct model_name {type1 element1;type2 element2;type3 element3;..} object_name;这里model_name 是一个这个结构类型的模块名称。object_name 为可选参数,是一个或多个原创 2016-06-21 14:32:21 · 747 阅读 · 0 评论 -
C++ 高级数据类型(四)—— 动态内存分配
到目前为止,我们的程序中我们只用了声明变量、数组和其他对象(objects)所必需的内存空间,这些内存空间的大小都在程序执行之前就已经确定了。但如果我们需要内存大小为一个变量,其数值只有在程序运行时 (runtime)才能确定,例如有些情况下我们需要根据用户输入来决定必需的内存空间,那么我们该怎么办呢?答案是动态内存分配(dynamic memory),为此C++ 集成了操作符new 和d原创 2016-06-21 14:31:39 · 291 阅读 · 0 评论 -
C++ 高级数据类型(三)—— 指针
我们已经明白变量其实是可以由标识来存取的内存单元。但这些变量实际上是存储在内存中具体的位置上的。对我们的程序来说,计算机内存只是一串连续的单字节单元(1byte cell),即最小数据单位,每一个单元有一个唯一地址。计算机内存就好像城市中的街道。在一条街上,所有的房子被顺序编号,每所房子有唯一编号。因此如果我们说芝麻街27号,我们很容易找到它,因为只有一所房子会是这个编号,而且我们知道它会原创 2016-06-21 14:31:05 · 1227 阅读 · 0 评论 -
C++ 高级数据类型(二)—— 字符序列
前面基础知识部分讲C++变量类型的时候,我们已经提到过C++的标准函数库提供了一个string类来支持对字符串的操作。然而,字符串实际就是一串连续的字符序列,所以我们也可以用简单的字符数组来表示它。例如,下面这个数组:char jenny [20];是一个可以存储最多20个字符类型数据的数组。你可以把它想象成:理论上这数组可以存储长度为20的字符序列,但是它也可原创 2016-06-21 14:30:07 · 431 阅读 · 0 评论 -
C++ 高级数据类型(一)—— 数组
数组(Arrays) 是在内存中连续存储的一组同种数据类型的元素(变量),每一数组有一个唯一名称,通过在名称后面加索引(index)的方式可以引用它的每一个元素。也就是说,例如我们有5个整型数值需要存储,但我们不需要定义5个不同的变量名称,而是用一个数组(array)来存储这5个不同的数值。注意数组中的元素必须是同一数据类型的,在这个例子中为整型(int)。例如一个存储5个整数叫做原创 2016-06-21 14:29:30 · 330 阅读 · 0 评论 -
C++ 控制结构和函数(三)—— 函数II(Functions II)
参数按数值传递和按地址传递(Arguments passed by value and by reference)到目前为止,我们看到的所有函数中,传递到函数中的参数全部是按数值传递的(by value)。也就是说,当我们调用一个带有参数的函数时,我们传递到函数中的是变量的数值而不是变量本身。 例如,假设我们用下面的代码调用我们的第一个函数addition :int x=5, y=原创 2016-06-21 14:28:38 · 238 阅读 · 0 评论 -
C++ 控制结构和函数(二) —— 函数I(Functions I)
通过使用函数(functions)我们可以把我们的程序以更模块化的形式组织起来,从而利用C++所能提供的所有结构化编程的潜力。一个函数(function)是一个可以从程序其它地方调用执行的语句块。以下是它的格式: type name ( argument1, argument2, ...) statement 这里:type 是函原创 2016-06-21 14:27:54 · 258 阅读 · 0 评论 -
C++ 面向对象(四)—— 多态 (Polymorphism)
基类的指针(Pointers to base class)继承的好处之一是一个指向子类(derived class)的指针与一个指向基类(base class)的指针是type-compatible的。 本节就是重点介绍如何利用C++的这一重要特性。例如,我们将结合C++的这个功能,重写前面小节中关于长方形rectangle 和三角形 triangle 的程序:// p原创 2016-06-21 14:35:55 · 267 阅读 · 0 评论