随笔分类 -  C/C++

摘要:1、容器的基本要求 a、并非所有的数据都可以放进容器当中。各种容器模板对所存数据类型都有一个基本要求——可复制构造。将数据放进容器的过程就是通过数据的复制构造函数在容器内创建数据的一个副本的过程。 b、容器中必须有若干与所存数据类型有关的嵌套定义类型。 C::value_type 容器所存数据类型 阅读全文
posted @ 2019-09-14 09:38 _No.47 阅读(371) 评论(0) 推荐(0)
摘要:1、容器的定义 容器:专门用于某种形式组织及存储数据的类称为“容器”。 2、容器与迭代器 迭代器:封装了对容器虚拟数据序列的操作并按约定提供统一界面以遍历容器内容的代理类即为迭代器。 举例理解: 针对树形结构节点类型的迭代器: 尽管容器内部的数据结构类型不同(set是一个树形结构,而list是链表结 阅读全文
posted @ 2019-09-12 04:21 _No.47 阅读(380) 评论(0) 推荐(0)
摘要:1、 所谓模板特例,是针对符合某种条件的模板参数值集合另外声明的模板实现变体。 template<typename T> class my_vector; template<> class my_vector<bool>; 2、特例的多种写法 template<typename T, int i> 阅读全文
posted @ 2019-09-10 05:39 _No.47 阅读(595) 评论(0) 推荐(0)
摘要:非类型模板参数 和 模板型模板参数 整数以及枚举类型;指向对象或者函数的指针;对对象或函数的引用;指向对象成员的指针。统称为非类型模板参数。 模板型模板参数,是指模板参数还可以是一个模板。 1、整数模板参数 非类型模板参数的作用相当于为函数模板或类模板预定义一些常量,在生成模板实例时,也要求必须以常 阅读全文
posted @ 2019-09-07 11:12 _No.47 阅读(1459) 评论(0) 推荐(0)
摘要:1、类的模板的使用 类,由于没有参数,所以没有模板实参推导机制。 2、模板类的继承 如果是普通类以模板实例为基类,需要为基类模板给定明确的模板参数值。例如, class another_stack:public my_stack<char>{} 3、异质链表 链表的类型为固定指向另一个类型节点的类, 阅读全文
posted @ 2019-09-06 07:27 _No.47 阅读(543) 评论(0) 推荐(0)
摘要:1、通过一个简单的例子来理解模板的用途: 模板为不同类型的数据生成操作相同或相似的函数。 弱语言如Python,可以使用一种函数来应对各种类型,但是C++就不得不为不同的类型编写相似的函数。模板的作用就是把这一步骤交给编译器去执行,让这些函数在编译器生成。 2、模板参数的自动推导 原则:凡是可以推导 阅读全文
posted @ 2019-09-06 05:55 _No.47 阅读(1572) 评论(0) 推荐(0)
摘要:在Win32中使用MFC 阅读全文
posted @ 2017-01-14 18:02 _No.47 阅读(163) 评论(0) 推荐(0)
摘要:无意中看到一篇文章《关于基类和子类构造函数的问题》,来自:http://blog.sina.com.cn/s/blog_64d57e710100n24f.html 这时会报错: 但是运行: 仍然会输出结果: 这显然是说明虽然为a开辟了空间、构建了成员函数,但是a的数据没有初始化,a的数据是读取的随机 阅读全文
posted @ 2016-07-01 12:04 _No.47 阅读(1800) 评论(0) 推荐(0)
摘要:所谓泛型编程就是以独立于任何特定类型的方式编写代码。使用泛型程序时,我们需要提供具体程序实例所操作的类型或值。标准库的容器、迭代器和算法都是泛型编程的例子。每种容器(如 vector)都有单一的定义,但可以定义许多不同种类的 vector,它们的区别在于所包含的元素类型。 阅读全文
posted @ 2016-03-31 16:59 _No.47 阅读(133) 评论(0) 推荐(0)
摘要:纯虚函数 在前面所提到过的 Disc_item 类提出了一个有趣的问题:该类从 Item_base 继承了 net_price 函数但没有重定义该函数。因为对 Disc_item 类而言没有可以给予该函数的意义,所以没有重定义该函数。在我们的应用程序中,Disc_item 不对应任何折扣策略,这个类 阅读全文
posted @ 2016-03-13 22:26 _No.47 阅读(238) 评论(0) 推荐(0)
摘要:在继承情况下,派生类的作用域嵌套在基类作用域中。如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义。正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就好象这些成员是派生类成员一样。如果编写如下代码: 名字 book 的使用将这样确定:bulk 是 Bulk_item 类对 阅读全文
posted @ 2016-03-11 22:49 _No.47 阅读(457) 评论(0) 推荐(0)
摘要:构造函数和复制控制 每个派生类对象由派生类中定义的(非 static)成员加上一个或多个基类子对象构成,当我们构造、复制、赋值和撤销一个派生类对象时,也会构造、复制、赋值和撤销这些基类子对象。 构造函数和复制控制成员不能继承,每个类定义自己的构造函数和复制控制成员。像任何类一样,如果类不定义自己的默 阅读全文
posted @ 2016-03-10 19:42 _No.47 阅读(321) 评论(0) 推荐(0)
摘要:面向对象编程基于三个基本概念:数据抽象、继承和动态绑定。//动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。 面向对象编程的关键思想是多态性(polymorphism)。在 C++ 中,多态性仅用于通过继承而相关联的类型的引用或指针。 继承 我们经常称因继承而相关联的类 阅读全文
posted @ 2016-03-08 19:14 _No.47 阅读(324) 评论(0) 推荐(0)
摘要:函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关: // pf points to function returning bool that takes two const string references b 阅读全文
posted @ 2016-03-02 18:26 _No.47 阅读(1734) 评论(0) 推荐(0)
摘要:隐式类类型转换 C++语言定义了内置类型之间的几个自动转换。也可以定义如何将其他类型的对象隐式转换为我们的类类型,或将我们的类类型的对象隐式转换为其他类型。为了定义到类类型的隐式转换,需要定义合适的构造函数。可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。 class Sal 阅读全文
posted @ 2016-03-01 14:31 _No.47 阅读(2168) 评论(0) 推荐(1)
摘要:赋值操作符 类赋值操作符接受类类型形参,通常,该形参是对类类型的 const 引用,但也可以是类类型或对类类型的非 const 引用。如果没有定义这个操作符,则编译器将合成它。类赋值操作符必须是类的成员,以便编译器可以知道是否需要合成一个。可以为一个类定义许多附加的赋值操作符,这些赋值操作符会因右操 阅读全文
posted @ 2016-02-29 09:58 _No.47 阅读(415) 评论(0) 推荐(0)
摘要:转换与类类型 可用一个实参调用的非 explicit 构造函数定义一个隐式转换。当提供了实参类型的对象而需要一个类类型的对象时,编译器将使用该转换。这种构造函数定义了到类类型的转换。除了定义到类类型的转换之外,我们还可以定义从类类型的转换。即,我们可以定义转换操作符,给定类类型的对象,该操作符将产生 阅读全文
posted @ 2016-02-28 13:24 _No.47 阅读(509) 评论(0) 推荐(0)
摘要:重载操作符的作用: 通过操作符重载,程序员能够针对类类型的操作数定义不同的操作符版本。程序用移位操作符(>> 和 <<)进行输入输出,用加号操作符(+)将两个 Sales_items 相加。 通过操作符重载,可以定义大多数操作符,使它们用于类类型对象。明智地使用操作符重载可以使类类型的使用像内置类型 阅读全文
posted @ 2016-02-26 17:43 _No.47 阅读(339) 评论(0) 推荐(0)
摘要:先看一个例子: 定义了一个类: 再定义一个类Test: 当我们仅仅定义一个Test类对象test1时: 输出结果: 此时如果用test1初始化一个Test类对象test2: 输出结果为: 原因在于,给test2初始化的时候调用了Test类中的复制构造函数,而这个复制构造函数中: 又有对成员的初始化列 阅读全文
posted @ 2016-02-25 15:16 _No.47 阅读(490) 评论(0) 推荐(0)
摘要:消息处理示例 有些类为了做一些工作需要对复制进行控制。为了给出这样的例子,我们将概略定义两个类,这两个类可用于邮件处理应用程序。Message 类和 Folder 类分别表示电子邮件(或其他)消息和消息所出现的目录,一个给定消息可以出现在多个目录中。Message 上有 save 和 remove 阅读全文
posted @ 2016-02-24 17:20 _No.47 阅读(230) 评论(0) 推荐(0)