博客
关于我
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 Server 5.5安装记录
查看>>
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql Timestamp时间隔了8小时
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
mysql union orderby 无效
查看>>
mysql where中如何判断不为空
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>
MySQL – 导出数据成csv
查看>>
MySQL —— 在CentOS9下安装MySQL
查看>>
mysql 不区分大小写
查看>>
mysql 两列互转
查看>>
MySQL 中开启二进制日志(Binlog)
查看>>
MySQL 中文问题
查看>>
MySQL 中日志的面试题总结
查看>>