
C++
文章平均质量分 92
Zi_z
知行合一
展开
-
【C++】类型转换
在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。因此C++提出了自己的类型转化风格,因为C++要兼容C语言,所以C++中还可以使用C语言的转化风格。转换的可视性比较差,所有的转换形式都是以一种相同形式书写,难以跟踪错误的转换。,因为而它们之间的转换可能是不安全的,此时需要用到。注意:注意虽然指针也是内置类型,但是。原创 2024-01-22 15:54:22 · 1049 阅读 · 0 评论 -
【C++】特殊类设计
由于new是由两部分组成,operator new + 构造(拷贝构造),其中operator new是一个全局函数,可以在类中对它重载一个该类专属的operator new,若重载了,new该类对象时就不会去调用全局,而是去调用类中的,既然在类中又可以将其声明为删除函数,这样new就无法调用operator new了,进而无法在堆上创建对象了。定义GC类和GC类的全局对象gc,当进程结束时,gc的生命周期也结束了,然后它会调用它的析构函数,函数内部刚好完成了对单例对象的释放工作。原创 2024-01-21 23:53:38 · 1099 阅读 · 0 评论 -
【C++】智能指针
借此,实际上把管理一份资源的责任托管给了一个对象。原创 2024-01-21 18:06:59 · 1168 阅读 · 0 评论 -
map/set封装
会导致类型不匹配,这是因为树的insert返回值pair中的迭代器类型是普通迭代器,而set中的迭代器的类型是const类型,普通迭代器无法构造const迭代器,所以会报错,解决方法为:设计一个支持普通迭代器转化为cons迭代器的构造函数。对于实例化const迭代器类型的模板类而言,该函数是构造函数,而对于实例化普通迭代器类型的模板类而言,该函数是拷贝构造,通过该函数即可解决上述问题。set是K模型,因此key_type是Key,value_type也是Key,实例化后树中要存储的元素类型也是Key类型。原创 2023-11-14 20:29:43 · 169 阅读 · 0 评论 -
【C++】入门
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机,20世纪80年代,计算机界提出了OOP(object orientedprogramming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,BjarneStroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。原创 2023-04-28 18:01:12 · 1539 阅读 · 1 评论