
1++的C++进阶
文章平均质量分 93
进击的1++
通信工程本科在读
展开
-
【1++的C++进阶】之特殊类设计
让对象只能在堆上创建,那么我们应该将构造函数,拷贝构造都私有化,使得用户不能自己在栈上创建对象。我们再提供一个静态函数的接口,其返回的是一个指向堆上对象的指针。与上述一样,我们将构造函数私有化,使得对象不能够直接在类外创建在栈上的对象。我们将其构造,拷贝与赋值私有化,防止其在类外创建对象,并且在类中声明了一个自己的静态对象,再提供一个访问它的全局访问点。该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式的实现有两种:饿汉模式和懒汉模式。原创 2023-09-20 10:14:01 · 2036 阅读 · 0 评论 -
【1++的C++进阶】之智能指针
要了解智能指针,我们先要了解RAII.RAII是一种利用对象生命周期来控制资源的技术。在对象初始化时,其接管资源,在对象的生命周期内其管理的资源始终保持有效,最后当对象析构时,释放资源。那么什么是智能指针呢?智能指针就是利用了RALL的原理,并且通过封装,使得它的对象能够向指针一样使用。因此其重载了*,->。new 与new[] ,delete与delete[]有什么区别呢?原创 2023-09-18 20:53:00 · 2070 阅读 · 0 评论 -
【1++的C++进阶】之异常
程序的错误大致可以分为三类:分别是语法错误;逻辑错误以及运行时错误。语法错误在编译链接阶段就能够被发现,只有100%符合代码规则的语法才能够 被编译通过,生成可执行程序。逻辑错误是指我们编写代码的思路发生问题,达不到预期目标,对于这种问题我们要进行调试解决。运行时错误是在程序运行期间发生的错误,如数组越界,除0错误,内存申请失败等,我们今天要学习的异常就是为了解决这种问题而引入的。assert断言,直接终止程序。当由于某些小问题就使得程序终止,影响用户体验。原创 2023-09-17 13:33:54 · 1996 阅读 · 0 评论 -
【1++的C++进阶】之emplace详解
通过运行结果我们可以发现,insert在插入时,由于我们传的是右值,其调用了构造和移动构造,而emplace只调用了构造函数。也就是说,emplace是在插入位置直接构造元素,而不是和insert一样,先是构造好,再移动或复制到插入位置。原创 2023-09-15 14:59:34 · 2696 阅读 · 0 评论 -
【1++的C++进阶】之C++11(二)
假设我们现在需要对一个集合进行排序,(我们用std::sort进行排序)当我们要排升序时则需要传一个升序规则的仿函数,要降序时,则传一个降序规则的仿函数,当要元素类型不同时,则又需要该这个仿函数。因此实际在底层编译器对于lambda表达式的处理方式,完全就是按照函数对象的方式处理的,即:如果定义了一个lambda表达式,编译器会自动生成一个类,在该类中重载了operator()。通过上述结果我们可以发现,对于自定义成员,其在没有自己实现析构函数,拷贝构造,赋值重载时,会自动调用自定义成员的移动构造。原创 2023-09-13 21:42:17 · 1844 阅读 · 0 评论 -
【1++的C++进阶】之C++11(一)
C++11带来了哪些变化?相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率,公司实际项目开发中也用得比较多。原创 2023-09-12 21:57:22 · 1027 阅读 · 0 评论 -
【1++的C++进阶】之多态
多态的定义:不同继承关系的类对象,去调用同一个函数,产生不同的行为。再说通俗点就是:一个行为,不同的对象去做会产生不同的结果。被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写是虚函数 (被virtual修饰的成员函数)三同(函数名,参数,返回值)子类虚函数不加virtual依旧构成重写。重写的协变:返回值可以不同,但必须是父子关系的指针或引用如果基类的析构函数为虚函数,此时派生类析构函数只要定义,无论是否加virtual关键字,都与基类的析构函数构成重写。原创 2023-08-04 15:07:38 · 1966 阅读 · 0 评论 -
【1++的C++初阶】之继承
继承机制是面向对象程序设计使代码可以复用的重要手段。它使得我们可以在原有类的基础上可以进行扩展,其产生的新类我们称为派生类或者子类;原来的类我们称为基类或父类。继承呈现了面向对象程序设计的层次结构。原创 2023-08-02 16:22:53 · 1881 阅读 · 0 评论