随笔分类 -  02_C++&C

摘要:很多应用程序都需要处理字符串。C语言在string.h(C++中为cstring)中提供了一系列的字符串函数,很多早期的C++实现为处理字符串提供了自己的类。 string类是由头文件string支持的(注意,头文件string.h和cstring支持对C-风格字符串进行操纵的C库字符串函数,但不支 阅读全文
posted @ 2019-03-08 00:35 Grooovvve 阅读(269) 评论(0) 推荐(0)
摘要:可以将类B声明在另一个类中。在另一个类A中声明的类B被称为嵌套类(nested class)。 类A的成员函数可以创建和使用嵌套类B的对象。 当且仅当声明为公有部分时,才能在类A的外面使用嵌套类。而且必须使用作用域解析运算符。(旧版C++不支持嵌套类概念) 对类进行嵌套和包含并不同。包含意味着将类C 阅读全文
posted @ 2019-03-08 00:34 Grooovvve 阅读(1022) 评论(0) 推荐(0)
摘要:进一步探讨类的特征,重点是类设计技术,而不是通用原理。一些特性很容易,一些特性很微妙。 运算符重载 目的是使C++操作更美观,更接近于内置类型的操作。 隐藏了内部的实现机理,并强调了实质。 格式:operator + () 计算时间:一个运算符重载的示例 友元 C++类的私有数据成员的访问只能通过类 阅读全文
posted @ 2019-03-08 00:33 Grooovvve 阅读(196) 评论(0) 推荐(0)
摘要:面向对象是(OOP)是特殊的、设计程序的概念性方法;包含以下特性: 抽象; 封装和数据隐藏; 多态; 继承; 代码的可重用性; 为了实现这些特性并且将这些特性组合在一起,C++所做的最重要的改进是提供了类。 l 如何定义类; l 如何为类提供公有部分和私有部分; l 如何创建使用类数据的成员函数; 阅读全文
posted @ 2019-03-08 00:32 Grooovvve 阅读(281) 评论(0) 推荐(0)
摘要:函数重载 多个函数,函数名相同,但是调用的时候,参数不同。 函数多态是C++在C语言的基础上新增的功能。多态指的是有多种形式,因此函数多态允许函数可以有多种形式。术语“函数重载”指的是可以有多个同名的函数。函数调用的时候,使用不同的参数列表。 函数重载的关键是特征标 ,即函数参数列表。如果参数的数目 阅读全文
posted @ 2019-03-08 00:31 Grooovvve 阅读(313) 评论(0) 推荐(0)
摘要:引用变量 C++新增了一种复合类型——引用变量。 引用是已定义的变量的别名。例如将twain作为clement变量的引用,则可以交替使用twain和clement来表示该变量。 引用变量的主要用途:用作函数的形参。通过将引用变量作为参数,函数将使用原始数据,而不是其副本。引用也为函数处理大型结构提供 阅读全文
posted @ 2019-03-08 00:30 Grooovvve 阅读(2363) 评论(0) 推荐(0)
摘要:内联函数的目的是为了提高程序运行速度所做的一项改进。 常规函数与内联函数的区别不在于编写方式,而在于C++编译器如何将它们组合到程序中。 编译过程的最终产品是:可执行程序,由一组机器语言指令组成。运行程序时,操作系统将这些这令载入到计算机内存中。 常规的函数调用过程:执行到函数调用指令时,程序将在函 阅读全文
posted @ 2019-03-08 00:29 Grooovvve 阅读(183) 评论(0) 推荐(0)
摘要:以下是《C++ Primer Plus》中第七章的内容: 使用C++函数的3个步骤: 提供函数定义 提供函数原型 调用函数 7.1.1 定义函数 函数分成两类:没有返回值的函数、有返回值的函数。 return返回语句标记了函数的结尾;否则,函数将在右花括号处结束。 对于有返回值的函数,必须使用返回语 阅读全文
posted @ 2019-03-08 00:28 Grooovvve 阅读(610) 评论(0) 推荐(0)
摘要:知识点: 队列:是一种抽象的数据类型(Abstract Data Type),可以存储有序的项目序列。 新项目被添加在队尾,并可以删除队首的项目。队列有些像栈。栈是在同一端进行添加和删除。这使得栈是一种后进先出的结构,队列是先进先出的。 问题:Heather银行要在Food Hea超市门口开设一个A 阅读全文
posted @ 2019-03-08 00:27 Grooovvve 阅读(421) 评论(0) 推荐(0)
摘要:再探new和delete new为创建的每一个对象的名称字符串分配存储空间,这是在构造函数中进行的; 析构函数使用delete来释放这些内存。 字符串是一个字符数组,所以析构函数使用的是带中括号的delete。 使用new来为整个对象分配内存: String * favorite = new Str 阅读全文
posted @ 2019-03-08 00:26 Grooovvve 阅读(741) 评论(0) 推荐(0)
摘要:返回方式: 返回指向const对象的引用 假如要编写函数Max(),它返回两个Vector对象中较大的一个,其中Vector是第11章开发的一个类。 Vector force1(50, 60); Vector force2(10,70); Vector max; max = Max(force1, 阅读全文
posted @ 2019-03-08 00:25 Grooovvve 阅读(551) 评论(0) 推荐(0)
摘要:如果在构造函数中使用new来初始化对象的指针成员时必须特别小心。 1 如果在构造函数中使用new来初始化指针成员,则应在析构函数中使用delete。 2 new和delete必须相互兼容。new对应于delete,new[ ]对应于delete[ ]。 2 如果有多个构造函数,则必须以相同的方式使用 阅读全文
posted @ 2019-03-08 00:24 Grooovvve 阅读(838) 评论(0) 推荐(0)
摘要:添加前面介绍过的复制构造函数和赋值运算符,使类能够正确管理类对象使用的内存。 知道对象何时被创建和释放。 修订后的默认构造函数 String::String() { len = 0; str = new char[1]; //这是为了和类析构函数兼容; str[0]=’\0’; } delete[ 阅读全文
posted @ 2019-03-08 00:23 Grooovvve 阅读(462) 评论(0) 推荐(0)
摘要:静态类成员 num_strings成员声明为静态存储类。静态类成员有一个特点:无论创建了多少对象,程序都只创建一个静态类变量副本。也就是说,类的所有对象共享一个静态成员。num_strings成员可以用来记录所创建的对象数目。 这里以StringBad类与String类为例,深入了解new、dele 阅读全文
posted @ 2019-03-08 00:22 Grooovvve 阅读(664) 评论(0) 推荐(0)
摘要:C++还提供了其他一些类库,这些类库更加专用。 例如,头文件complex为复数提供了类模板complex,包含用于float、long和long double的具体化。 这个类提供了标准的复数运算以及能够处理复数的标准函数。 C++11新增的头文件random提供了更多的随机数功能。 头文件val 阅读全文
posted @ 2019-03-07 19:20 Grooovvve 阅读(304) 评论(0) 推荐(0)
摘要:STL包含很多处理容器的非成员函数: sort() copy() find() random_shuffle() set_union() set_intersection() set_difference() transform() 它们的总体设计是相同的,都使用迭代器来标识要处理的数据区间和结果的 阅读全文
posted @ 2019-03-07 19:16 Grooovvve 阅读(284) 评论(0) 推荐(0)
摘要:函数对象也叫做函数符(functor)。 函数符是可以以函数方式和( )结合使用的任意对象。 包括函数名,指向函数的指针,重载了()运算符的类对象。 可以这样定义一个类: class Linear { private: double slope; double y0; public: Linear( 阅读全文
posted @ 2019-03-03 21:35 Grooovvve 阅读(328) 评论(0) 推荐(0)
摘要:有了之前使用STL的经验后,接下来讨论泛型编程及其底层的理念; 首先我们知道STL只是泛型编程的一种; 而面向对象的编程方式关注的是编程的数据方面; 而泛型编程关注的是算法; 但是,他们之间的一个重要共同点是:创建可重用的代码;但是理念却完全不一样。 接下来讨论泛型编程的理念: 这种编程方式旨在编写 阅读全文
posted @ 2019-03-03 21:34 Grooovvve 阅读(415) 评论(0) 推荐(0)
摘要:标准模板库的英文缩写是STL,即Standard Template Library。 STL里面有什么呢? 它提供了一组表示容器、迭代器、函数对象和算法的模板。 容器是一个与数组类似的单元,可以存储若干值。 STL容器是同质的,即存储的值的类型相同。 算法是完成特定任务的处方(例如对数组进行排序或在 阅读全文
posted @ 2019-03-03 21:33 Grooovvve 阅读(392) 评论(0) 推荐(0)
摘要:这部分属于C++的新特性,感觉比较高阶的特性。我把它归于属于奇技淫巧的范畴。了解即可。 RTTI是运行阶段类型识别(Runtime Type Identification)的简称。 这是添加到C++中的新特性。 很多老式的编译器不支持它,或者可能包含开关RTTI的编译器设置。 RTTI旨在位程序在运 阅读全文
posted @ 2019-03-02 00:04 Grooovvve 阅读(278) 评论(0) 推荐(0)