博客
关于我
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/

你可能感兴趣的文章
mysql5.7 安装版 表不能输入汉字解决方案
查看>>
MySQL5.7.18主从复制搭建(一主一从)
查看>>
MySQL5.7.19-win64安装启动
查看>>
mysql5.7.19安装图解_mysql5.7.19 winx64解压缩版安装配置教程
查看>>
MySQL5.7.37windows解压版的安装使用
查看>>
mysql5.7免费下载地址
查看>>
mysql5.7命令总结
查看>>
mysql5.7安装
查看>>
mysql5.7性能调优my.ini
查看>>
MySQL5.7新增Performance Schema表
查看>>
Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
查看>>
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>