- 博客(21)
- 收藏
- 关注
原创 1.Qt5.15及其以上的下载
从Qt5.15开始,Qt官网的开源版本只提供在线安装软件,不会在提供离线安装的软件。我们这里将介绍的是在线安装教程。
2023-11-21 15:38:21
1898
原创 18.手写一个function模板函数
使如下代码可以正常运行:实现:模板样式:这里使用模板的偏特化,来实现需求我们想要用同一个数据类型来同时接受两种不同的对象,这里就得使用**继承(接口)**来实现, 这里我们可以使用类来同时接受不同函数和对象。并且由于对象的类型是不确定的,所有我们得在类对象的构造函数上面加上模板,来处理这种情况。 我们在这里定义一个函数指针,来接收我们函数地址,并进行初始话。 我们这里定义了一个指针对象,用来记录对象的地址,并定义了一个指向成员函数的指针(因为是虚函数,所有用虚函数表),来记录成
2023-11-18 10:07:33
655
1
原创 17.变参模板
/ ... sum_test 定义 ...这部分使用宏定义创建了一个名为sum_test的命名空间。这是为了封装sum结构体,防止与其他代码中的相同名称发生冲突。
2023-11-17 11:40:00
373
原创 16.模板的特化
模板特化是C++中一种机制,允许为模板提供特定类型或特定值的定制实现。通常,模板是用于创建通用的数据类型或函数,但在某些情况下,我们可能希望为特定的类型或值提供特殊的实现。这就是模板特化发挥作用的地方。 有两种主要类型的模板特化:类模板特化和函数模板特化。
2023-11-16 15:55:27
390
1
原创 14.模板基础知识
C++中的模板是一种通用编程工具,允许你编写与数据类型无关的代码。模板允许你编写函数或类,其中的某些部分可以用类型或值替换,从而实现通用性和灵活性。模板是C++中强大而灵活的特性之一,它们使得编写可重用的代码变得更加容易。 在C++中,有两种主要类型的模板:函数模板和类模板。
2023-11-15 08:28:50
128
原创 11.虚函数与虚函数表
我们来看看上述代码中会输出什么内容呢?我们运行一下看看: 可以发现这里我们输出的是一个类的函数,两个类的函数,由这里我们可以知道普通的成员方法是跟着类走的,可是这里我们的对象明明是一个类,我们想输出3个类的方法,应该这么办呢?这里就要引入虚函数。 **虚函数(Virtual Function)**是面向对象编程(Object-Oriented Programming)中的一个重要概念,主要用于实现多态(Polymorphism)。在许多面向对象的编程语言中(如C++、Java等),虚函数允许子
2023-11-07 20:10:22
394
原创 10.C++继承运行顺序
我们来运行一下看看是这么构造的 可以发现调用顺序是这样的:先构造父类,在按照定义的成员属性的顺序来进行构造。至于为什么会这样呢?因为成员属性的构造可能是建立在父类的基础上在进行构造的,而成员属性也是一个道理,后定义的成员属性,可能是在先定义成员属性的基础的上进行构造的。
2023-11-06 21:31:17
221
1
原创 9.手写sort(模仿源码)
int *firstint *lastfirstlastfirstvaluelr我们这里调用sort函数来进行排序,现在sort内部只有一个快速排序,我们我们接着来进行优化。
2023-11-05 11:43:02
816
1
原创 8.智能指针
是 C++ 标准库中的智能指针类型,用于共享对象的所有权和自动化内存管理。它是最常用的智能指针之一,提供了一种安全、方便、自动化地管理动态分配内存的方式。以下是关于的详细解释:允许多个智能指针共享相同的对象。每个都维护一个引用计数,记录有多少个指向相同的对象。当引用计数为零时,对象的内存会被自动释放,确保对象在不再被引用时能够安全地被销毁。构造和初始化:可以使用以下方式来创建// 多个 shared_ptr 共享相同的 int 对象在上面的示例中,p1和p2共享相同的int。
2023-11-05 11:41:26
349
1
原创 Ubuntu20.04 的基础命令及使用
这将显示所有正在运行的进程的详细信息,包括用户、PID、CPU 使用率等。这将显示有关系统中CPU的详细信息,包括处理器型号、核心数等。这将在当前目录及其子目录中搜索大小大于 10MB 的文件。这将显示当前系统中所有挂载的文件系统的磁盘空间使用情况。这将显示所有网络接口的信息,包括IP地址、子网掩码等。这将显示所有网络接口的信息,包括IP地址、子网掩码等。这将显示系统中内存的使用情况,包括已使用、可用等信息。这将显示当前用户的所有进程,包括守护进程和终端会话。这将显示当前系统上的所有网络连接和端口的状态。
2023-11-05 10:56:29
2312
1
原创 7.手写Vector(模仿STL-vector)(只有封装思想)
可以发现结构是一模一样的(没有自己的思想,先学着写,啊哈哈哈哈哈哈哈哈哈),但是呢?它传的是一个模板类型,然后在进行来原地构造,(这里由于还没学,就先不写了),它可以适用很多种情况,如果传进来的是个指针类型,原地构造也是可以很好解决的,我们这里只有一个。我们来看看这段最核心的代码(自我认为),它先进行了一个判断,判断这个函数满没有满,如果没有的话,我们就调用。在362行代码中,他先进行了一个判断,判断这个数组是否满了,并且插入的是末尾,如果是的话,我们就会进行和。他最后返回了一个地址,可。
2023-11-02 20:03:38
701
1
原创 6.函数重载与运算符重载
是指在一个类中可以存在多个同名函数,但它们的必须。在调用函数时,编译器会根据传入的参数类型或数量来确定调用哪一个函数。这段代码展示了函数重载的一个简单示例,包含了三个重载的add函数。:这个函数接受两个整数参数a和b,并返回它们的和。:这个函数接受三个整数参数ab和c,并返回它们的和。:这个函数接受两个双精度浮点数参数a和b,并返回它们的和。这两段代码能否进行重载呢?
2023-11-02 20:00:05
628
原创 5.深拷贝与浅拷贝+返回值优化
在C++中,深拷贝(deep copy)和浅拷贝(shallow copy)是两种不同的对象拷贝方式,它们在处理动态分配内存时表现出不同的行为。浅拷贝是指将一个对象的数据成员的值复制到另一个对象,但如果对象中包含指向动态分配内存的指针,它们将指向同一块内存空间。这样,当一个对象被销毁时,它指向的内存空间会被释放。如果另一个对象仍然引用这片内存,那么这个内存将变成悬空指针,访问它可能导致未定义行为。使用默认的拷贝构造函数和赋值运算符进行拷贝时,通常会发生浅拷贝。
2023-11-02 19:53:13
781
原创 4.构造函数与析构函数
int __y;int __z;A a;return 0;在上述这种情况中发生了什么呢?我们定义了一个a对象,由于我们在类中没有声明构造函数,所以这时C++A() {};这时当我们定义一个A类对象a时,这个默认函数将被调用,并没有进行初始化,因为默认构造函数中并没有初始化内容,为空函数。下面我们将自己写一个构造函数,看看会发生什么。
2023-11-02 19:45:57
648
原创 3.命名空间
在C++中,是一种用来避免名称冲突的机制。通过将代码放在一个命名空间内,可以确保在程序中可以使用相同的名字来表示不同的实体,只要它们属于不同的命名空间。我们写程序时有没有产生过命名相同的错误呢?比如说定义了两个相同的变量,或定义了两个相同的函数,或在我们上一篇文章中说的类呢?如果有这种错误我们会怎么解决呢?这是有人就说了,这还不简单,直接改了不久好了嘛。可是这是我们可以该的情况下,可是如果我们改不了呢?当我们在写工程项目的时候会使用一些别的公司研发好的命名空间,如果这时两个公司的命名冲突了怎么办呢?
2023-11-02 19:38:47
540
原创 2.类和对象
1、类 类 是对一群具有 相同 特征 或者 行为 的事物的一个统称,是 抽象 的,不能直接使用 特征 被称为 属性 行为 被称为 方法 类就相当于制造飞机时的图纸,是一个模板,是负责创建的2、对象 对象 是 由类创建出来的一个 具体 存在,可以直接使用,由哪一个类创建出来的对象,就拥有在哪一个类中定义的: 属性 方法
2023-11-02 19:35:09
605
原创 1.C++程序是如何运行起来的呢?
这个问题的具体步骤取决于计算机环境和使用的C++编译器,但大体如下使用文本编辑器编写程序,并将其保存在文件中,这个文件就是程序的源代码。编译源代码。这意味着运行一个程序,将源代码翻译为主机使用的内部语言一一机器语言。包含了翻译后的程序的文件就是程序的目标代码(object code)。将目标代码与其他代码链接起来。例如,C++程序通常使用库。C++库包含一系列计算机例程(被称为函数)的目标代码,这些函数可以执行诸如在屏幕上显示信息或计算平方根等任务。
2023-11-02 19:30:19
1238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人