- 博客(13)
- 收藏
- 关注
原创 C++ ---- 模板
由此,我们看到编译器编译失败,编译器报错参数 T 不明确,因为在编译期间,当编译器看到该实例化时,需要推演其实参类型 通过实参a将T推演为int,通过实参c将T推演为double类型,但模板参数列表中只有一个T, 编译器无法确定此处到底该将T确定为int 或者 double类型而报错。在上面代码我们可以看出,T Add(const T &x, const T &y),我们传入的参数必须是一样的,但是如果我们调用Add时,传入一个 int类型,一个 double 类型,这时编译器会怎么处理呢?
2026-04-09 22:54:18
340
原创 C++ -- 内存管理
如果申请的是内置类型的空间,new和malloc,delete和free基本类似,不同的地方是: new/delete申请和释放的是单个元素的空间,new[]和delete[]申请的是连续空间,而且new在申请空间失败时会抛异常,malloc会返回NULL。6. 申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数与析构函数,而new在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成 空间中资源的清理。在C++中,我们的内存是如何分布的呢?
2026-04-08 21:16:56
370
原创 C++ 类和对象下
比如上述Time类和Date类,在Time类中声明Date类为其友元类,那么可以在Date类中直接 访问Time类的私有成员变量,但想在Time类中访问Date类中私有的成员变量则不行。在类中,想访问类的私有变量,一个方法是定义成员函数,另一个是友元;,参见友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所有成员。2. 注意内部类可以直接访问外部类中的static成员,不需要外部类的对象/类名。友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。
2026-04-01 15:29:18
390
原创 C++ 类和对象中 -- 拷贝构造函数,赋值运算符重载,const成员函数,取地址及const取地址操作符重载
默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。当我们不写拷贝构造函数时,能不能生成拷贝构造,直接使用呢?
2026-03-26 21:04:05
342
原创 C++ 类和对象中 —— 构造函数和析构函数
内置类型就是语言提供的数据类型,如:int/char...,自定义类型就是我们使用 class / struct / union 等自己定义的类型,对于内置类型确实没什么影响,但是对于自定义类型就会发现。
2026-03-23 23:08:08
381
原创 C++入门
命名空间域需要使用namespace关键字,后面跟命名空间的名字然后接{ }即可,{ }中是命名空间的成员。缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。示例:当我们传参时,指定实参则a的值为实参值 a = 10,若不指定,则用形参的缺省值,a = 20是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表参数个数或类型或类型顺序不同,常用来处理实现功能类似数据类型。
2026-03-16 23:08:24
328
原创 数据结构————栈和队列
本文介绍了栈和队列两种线性数据结构。栈采用后进先出(LIFO)原则,使用数组实现,包含初始化、销毁、压栈、出栈等操作。队列遵循先进先出(FIFO)规则,用链表实现,支持入队、出队、获取队头队尾元素等功能。两种结构都提供了完整的C语言实现代码,包括数据结构定义、核心功能函数和测试用例。栈的实现重点在于数组扩容处理,队列则通过链表节点管理实现高效插入删除。文章通过具体代码展示了这两种数据结构的典型应用场景和操作方法。
2026-03-04 10:55:32
42
原创 C语言——数组
2. arr数组名单独出现时可表示是首元素地址,等同于 arr == arr[0]。2. 连续存储:数组中的元素在内存中是连续存储的,这样可以通过下标快速访问任意元素。1. 数组的读取是从数组首元素地址读取,即从arr[0]的地址开始读取。二维数组与多为数组的本质是一维数组,我单独写在下一章,我懒得在这写了。:数据个数(即[ ] 内的数字大小)与初始化个数相同。1. 数组的第一个下标是0,存储的是第一个的数据。2. 数组的数据是单一的,不可重复。
2024-05-12 21:03:20
465
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅