![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++知识点
文章平均质量分 89
渡我白衣
世界从来不语,却回答了所有问题
展开
-
继承与多态常见面试题解析
3. 面向对象设计中的继承和组合,下面说法错误的是?()A:继承允许我们覆盖重写父类的实现细节,父类的实现对于子类是可见的,是一种静态复用,也称为白盒复用B:组合的对象不需要关心各自的实现细节,之间的关系是在运行时候才确定的,是一种动态复用,也称为黑盒复用C:优先使用继承,而不是组合,是面向对象设计的第二原则D:继承可以使子类能自动继承父类的接口,但在设计模式中认为这是一种破坏了父类的封装性的表现。原创 2024-07-26 00:41:52 · 508 阅读 · 1 评论 -
探索C++中的多态性:理解虚函数和运行时多态
在现代软件开发中,面向对象编程(OOP)已经成为了主流。其中一个强大的概念就是多态性(Polymorphism),它不仅仅是一种技术,更是一种设计思想和实现方式,为软件开发带来了巨大的灵活性和可维护性。多态性允许我们使用统一的接口来处理不同类型的对象,同时根据对象的实际类型来调用适当的方法。这种动态绑定的特性不仅提高了代码的复用性和可扩展性,还使得软件系统能够更好地适应变化和需求的增加。本博客将深入探讨C++语言中多态性的各个方面:从基本概念到实际应用,从虚函数到虚函数表,从继承到接口隔离。原创 2024-07-23 23:41:06 · 799 阅读 · 4 评论 -
C++面向对象三大特性:继承
public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。组合是一种has-a的关系。假设B组合了A,每个B对象中都有一个A对象。继承允许你根据基类的实现来定义派生类的实现。这种通过生成派生类的复用通常被称为白箱复用(white-box reuse)。术语“白箱”是相对可视性而言:在继承方式中,基类的内部细节对子类可见。继承一定程度破坏了基类的封装,基类的改变,对派生类有很大的影响。派生类和基类间的依赖关系很强,耦合度高。对象组合是类继承之外的另一种复用选择。原创 2024-07-20 23:26:26 · 791 阅读 · 1 评论 -
C++初阶编程:list容器的简单模拟实现
在C++标准库中,list是一种双向链表容器。这里简单提一下双向链表——什么是双向链表呢?一个存储数据的字段。(我们通常用_data表示)一个指向前驱节点的指针。(我们通常用_prev表示)一个指向后继节点的指针。(我们通常用_next表示)这样,每个节点都知道它的前一个节点和后一个节点,从而支持在常数时间内进行插入和删除操作。在实现list之前,我们要先定义一下这个链表的节点结构。一个链表是有多个节点链接组成,所以节点自然是重中之重。原创 2024-06-29 19:45:42 · 865 阅读 · 1 评论 -
C++编程:模板初阶
函数模板是一种用于定义一组相关函数的蓝图。这些函数模板在使用时会根据实参类型生成具体的函数版本。T c = a;a = b;b = c;(typename是用来定义模板参数的关键字,也能用class代替)在编译时,编译器会根据传入的实参类型生成具体类型的函数。Swap(a, b);// 编译器生成处理int类型的Swap函数Swap(x, y);// 编译器生成处理double类型的Swap函数。原创 2024-06-01 21:29:39 · 812 阅读 · 4 评论 -
C++:类与对象(上)
class是我们定义类所使用的关键字,使用方法跟定义结构体类似,我们可以在类的主体部分定义成员变量与成员函数。类通常有两种定义方式,第一种就是声明与定义全部放在类体中,但需要注意的是,如果函数是在类里面定义的,编译器可能默认会将函数处理成内联函数。第二种方法就是类声明放在.h头文件中,定义放在.cpp源文件上,一般来说,除非迫不得已,我们更推荐使用第二种定义方式。但需要注意的是,由于类域的限制,我们在.cpp文件中写定义的时候,要在函数名前加上类名::这一点就跟C语言模拟实现栈,队列等数据结构一样。原创 2024-04-19 19:51:08 · 788 阅读 · 6 评论 -
命名空间:组织代码的利器
在大型项目的代码分工工作中,通常会出现不同的人自己定义了相同名字的函数,参数等。就可能出现名字冲突或者命名污染等问题。为了避免这些问题的出现吗,我们就引出了“namespace”,命名空间这一概念。使用命名空间的目的是为了对标识符的的名称进行本地化,防止命名冲突,提高代码的可读性与可维护性。通过命名空间,我们可以将代码模块化,使得代码结构更清晰。在c语言中当我们定义一个全局变量rand,就会与stdlib.h库中的rand函数冲突。于是我们就在c++中引入了命名空间的概念。原创 2024-03-30 17:46:28 · 401 阅读 · 1 评论