初始化和释放不一定要通过构造和析构函数完成,但是C++中为了保证代码的安全性,设置了构造和析构函数,析构函数能自行执行,构造函数必须自动或显式地执行以此保证我们不会忘记初始化。
构造函数:一般用于初始化对象成员变量。
析构函数:一般用于释放对象成员变量所占的外部堆内存。
构造函数的特点:1、不带返回值。2、与类同名。3、可以有多个形参列表不同的构造函数。4、构造函数会根据我们的传参自行选择是哪个函数。5、对象的创建必定经过构造函数。
析构函数的特点:1、不带返回值。2、~+类名。3、只能有一个。4、不能带参数。5、析构函数可以自行调用(不建议)。5、如果对象创建在堆上,需要自己手动删除,删除的时候回自动调用析构函数。6、一个程序可能会有多个对象需要析构,按反入栈的顺序进行析构。7、一个对象销毁前必定经过析构函数。
拷贝构造函数与深浅拷贝
形参类型是同类(比如const CClass &c)的构造函数就是拷贝构造函数。
CClass c2 = c1;
CClass c3(c1);
这两句代码都是在调用拷贝构造函数,是等价的。
默认情况下拷贝构造函数是把成员变量一一复制,如果有成员变量是地址,指向了堆内的空间,那么复制过来的成员变量指向了同一块堆内存空间,这是浅拷贝。
如果需要把堆内存空间也放到新开辟的堆空间里,我们需要在拷贝构造函数里自定义这个堆空间的开辟和复制过程,也就是深拷贝。
运算符重载
运算符重载(Operator Overloading)是 C++ 中的一种特性,允许你重新定义或扩展已有的运算符的行为,使其适用于自定义的类或数据类型。
比如赋值运算符重载,operator=有点类似一个被定义的函数。
class MyClass {
public:
int value;
MyClass& operator=(const MyClass& other) {
if (this != &other) {
value = other.value;
}
return *this;
}
};
返回引用是支持连续的operator=赋值操作。
返回引用意味着是除了把*this作为返回值之外,operator=的左边如果是引用类型,那么operator=的左边的变量也是*this的引用。如果不是引用类型,那么返回值被当做右值使用。
构造函数的初始化列表
成员对象:B类变量是A类的成员变量之一,那么可以叫这个B类变量为A类的成员对象。
如果B类自定义了构造函数,那么默认构造函数会被覆盖掉,那么A类对象构造的时候无法自动调用B类对象的构造函数,就需要手动调用。
初始化列表的语法如下:
ClassName::ClassName(Type1 arg1, Type2 arg2, …) : member1(arg1), member2(arg2), … {
// 构造函数的主体
}
初始化列表会省略类型。
假设menber1是int age,在初始化列表中member1(arg1)其实就是int age = arg1;
假设member2是CClass c,member2(arg2)其实就是CClass c(arg2);
注意:成员变量的初始化和他们定义顺序有关,和构造函数初始化列表中出现的先后顺序无关。
类的各种成员、方法
普通成员方法
- 属于类的作用域。
- 调用该方法的时候,需要依赖一个对象。
- 可以任意访问对象的私有成员变量。
- 默认传入了this指针。
Static成员变量
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。
学习路线图
其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。
网络安全工具箱
当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。
项目实战
最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**