博客
关于我
C++学习笔记八
阅读量:282 次
发布时间:2019-03-01

本文共 1481 字,大约阅读时间需要 4 分钟。

C++学习笔记八

虚函数

虚函数是面向对象编程中多态的基础,通过它,可以让同一函数在不同子类中有不同的行为。以下是一个简单的例子:

#include 
using namespace std;class Parent {public: void func() { cout << "Parent" << endl; }};class Child : public Parent {public: void func() { cout << "Child" << endl; }};int main() { Child c; c.func(); // 输出 "Child" Parent *p = &c; p->func(); // 输出 "Parent" return 0;}

早绑定与静态多态

在上述代码中,函数调用结果是"ChildParent"。这是由于函数调用时已经确定了调用哪个版本的函数,这种现象称为早绑定静态多态

使虚函数生效

如果在Parent类中定义func为虚函数:

class Parent {public:    virtual void func() {        cout << "Parent" << endl;    }};

则输出结果会变为"ChildChild"。这表明虚函数的调用取决于对象的类型,而不是指针的指向。这种方式是多态的常规使用方式。

纯虚函数

如果子类没有实现纯虚函数:

class Parent {public:    virtual void func() = 0;};

这意味着编译器知道函数没有实现,但可以在子类中提供实现。这种情况下,编译器不会生成函数的代码,仅进行符号链接。

顺序容器

C++提供了多种顺序容器,包括vectorlistdeque。这些容器都支持随机访问和双向迭代。以下是它们的主要区别:

  • vector:动态数组,元素可以通过索引快速访问,插入和删除操作的时间复杂度较低。
  • list:双向链表,插入和删除操作的时间复杂度较高,适合频繁修改数据的场景。
  • deque:双端队列,支持在两个端点快速插入和删除元素。

容器适配器

C++还提供了以下容器适配器:

  • stack:栈结构,通常与vectorarray配合使用。
  • queue:队列结构,支持先进先出(FIFO)的操作。
  • priority_queue:优先队列,支持按键排序的元素提取。

这些容器适配器提供了与底层容器不同的接口,通常用于简化常见操作。

容器的初始化

容器可以通过迭代器、c(n)c(n, t)初始化。迭代器适用于所有容器,而c(n, t)仅适用于顺序容器。例如:

vector
vec = c(5, 10); // 初始化为五个10vector
vec = cbegin(vec), viter(vec.end());

容器内元素的约束

容器的元素类型必须支持赋值运算,并且对象必须可以复制。引用类型不支持赋值运算,因此不能存储在容器中。

迭代器

在C++中,迭代器是访问容器元素的重要工具。常见的迭代器操作包括:*it, it++, it--, it == end, it != begin等。

使迭代器失效的操作

某些容器操作会改变容器的内涵,例如erase函数会删除元素,导致指向这些元素的迭代器失效。因此,在进行这些操作时,应小心使用迭代器。

转载地址:http://pfao.baihongyu.com/

你可能感兴趣的文章
Mysql中索引的分类、增删改查与存储引擎对应关系
查看>>
Mysql中索引的最左前缀原则图文剖析(全)
查看>>
MySql中给视图添加注释怎么添加_默认不支持_可以这样取巧---MySql工作笔记002
查看>>
Mysql中获取所有表名以及表名带时间字符串使用BetweenAnd筛选区间范围
查看>>
Mysql中视图的使用以及常见运算符的使用示例和优先级
查看>>
Mysql中触发器的使用示例
查看>>
Mysql中设置只允许指定ip能连接访问(可视化工具的方式)
查看>>
mysql中还有窗口函数?这是什么东西?
查看>>
mysql中间件
查看>>
MYSQL中频繁的乱码问题终极解决
查看>>
MySQL为Null会导致5个问题,个个致命!
查看>>
MySQL为什么不建议使用delete删除数据?
查看>>
MySQL主从、环境搭建、主从配制
查看>>
Mysql主从不同步
查看>>
mysql主从同步及清除信息
查看>>
MySQL主从同步相关-主从多久的延迟?
查看>>
mysql主从同步配置方法和原理
查看>>
mysql主从复制 master和slave配置的参数大全
查看>>
MySQL主从复制几个重要的启动选项
查看>>
MySQL主从复制及排错
查看>>