C++ 进阶应用实战
文章平均质量分 87
本实战课程侧重于深入理解 C++ 语言的特性,专注于封装、继承、多态等方面的高级概念。通过实际案例,学员将掌握如何精准运用 C++ 语法,提高代码的可读性和可维护性。课程着眼于实际应用,培养学员在实际项目中灵活运用 C++ 特性的能力,使其成为高效而有影响力的 C++ 开发者。
ALONE_WORK
这个作者很懒,什么都没留下…
展开
-
模板函数与模板类
在合适的场合使用函数模板能够大大的提升开发的效率,例如经常使用的一个例子,求两个数的最大值。就目前使用的方法中,最大值求法有很多种,如宏定义、重载、模板。宏定义求最大值的做法也会经常见到,但是宏定义不会安全检查,如果稍微有点错误就难以发现了。可以考虑使用模板替代宏。原创 2024-01-22 19:45:00 · 60 阅读 · 0 评论 -
运算符重载
重载使得类变得更加方便使用,在重载时也要注意一些细节。在重载运算符时,要尽量去贴合类的常用使用习惯,而不是看有什么运算符全部重载。需要选择适合类的重载运算符。有些运算符最好要成对实现。对于单目运算符最好使用成员函数方式重载,对于双目运算符最好使用友元函数方式重载。尽量减少构造临时对象。原创 2024-01-19 19:30:00 · 74 阅读 · 0 评论 -
C++ 中 static 应用
在C/C++中都可以使用static关键字,但是却需要注意在C与C++的使用方法有差异。C++除了继承C中static的使用方法外还增加了新的使用方法。本次实验主要介绍static在C++中的使用方法。静态的成员在实例化对象之前已经产生,并将数据存放在全局(静态)存储区。在C++中主要新增有静态数据成员和静态成员函数两种使用方法。公有静态数据成员可以看做是作用于在类中的全局变量,而私有静态数据成员虽然其他的类无法访问,但是类的所有对象将共享该数据。而静态的成员函数可以看做全局函数来使用。静态成员函数没有。原创 2024-01-17 19:30:00 · 64 阅读 · 0 评论 -
友元函数与友元类
使用过Qt的同学相信都了解Qt库内部也使用了很多友元类,Qt封装了大量的类库,里面很多库是有关联性的,所以在使用的时候直接使用友元的方式,比较简单快速的解决了问题。友元函数或友元类不受权限关键字的约束,可以在类内任意位置。可以直接访问类的所有成员,包括私有成员。友元函数或者友元类破坏了类的封装性,建议少用或者不用。友元关系不可传递,即友元类的派生类不再是友元类。友元关系是单向性的,如示例代码 3 中Circle类可以访问Point类,但Point类不能访问Circle类。原创 2024-01-16 00:10:07 · 283 阅读 · 0 评论 -
C++ 异常处理
异常便是程序中数据出现不合理的特殊情况处理,在做项目时我们常常需要想到的是特殊的情况,只有将所有的特殊情况处理好之后程序才能很好的运行。原创 2024-01-10 21:26:46 · 457 阅读 · 0 评论 -
RTTI(运行时类型识别)
RTTI需要以继承为基础。RTTI基类中需要有虚函数或者纯虚函数。RTTI使用typeid和来实现。需要注意在基类向派生类转换时可能会失败。原创 2024-01-08 21:16:50 · 682 阅读 · 0 评论 -
纯虚函数和抽象类
纯虚函数、抽象类、接口类,这三个名词存在联系,本小节将介绍这三个名词概念、使用方法以及应用场景。原创 2024-01-01 18:18:55 · 886 阅读 · 0 评论 -
虚函数以及实现原理
多态可扩展行和易维护性的实用性,如果有新类型的任务时直接继承基类实现即可,并且和其他任务类型是相似的,实现起来非常方便。维护时也只需要检查相应任务类即可。提高了开发效率。实现多态的关键在于虚函数表。多态用在合适场景能提高开发效率。使用多态也有一定的限制,必须在继承时并且有类似任务时,即合适场景时使用。原创 2024-01-01 18:16:42 · 748 阅读 · 0 评论 -
论虚继承的作用
菱形继承是继承中一种特殊的继承,如图中类B和 类C都继承自类A,而类D又同时继承类B和类C,这样就产生了一个菱形继承,如下图。通过本小节实验,需要学习菱形继承以及菱形继承所产生的问题。学习虚继承的使用场景以及虚继承的使用方式。在实际开发中,菱形继承可能使用的并不是很多,但是一旦用到便需要注意使用虚继承。实际项目开发中,如果使用IDE环境框架,在使用现有框架的时候就要注意一下,因为现有框架很多是经过了多重继承。在开发中,最好不好使用这么复杂的继承关系。原创 2024-01-01 18:13:25 · 883 阅读 · 0 评论 -
多继承与多重继承
多继承与多重继承是实际开发中常会用到的,需要深入学习理解。多继承与多重继承比较好理解,但注意不要混淆这两个概念。多重继承尤为常见,在实际开发中,使用的很多框架基本都是经过了多重继承。原创 2023-12-25 19:39:03 · 365 阅读 · 0 评论 -
继承中的关系
使用基类作为参数传递时,直接传递产生临时变量,会耗费时间空间,而引用和指针传递不产生临时变量,所以推荐使用引用的方式作为参数传递,相对来说指针比较复杂所以不在推荐之列。临时变量调用拷贝构造函数,使用时需要注意。可以从截图中发现传递不管是基类还是派生类,其调用的都是Person类的eat函数,这也是为什么叫做isA。当派生类对象传递给基类参数时,其本质是构造一个基类对象或者使用派生类对象中基类部分。无法重载,只能隐藏,即只要同名就隐藏,而不管参数类型与个数。原创 2023-12-25 19:35:13 · 820 阅读 · 0 评论 -
C++ 继承方式
类的成员属性和继承方式组合后有多种访问方式,需了然于心。继承方式有public、protected、private三种,有四种写法,因为还有一种默认继承的方式。一般情况不使用默认继承的方式,直接明确继承方式,方便阅读。开发中使用public继承方式较多。原创 2023-12-25 19:32:39 · 934 阅读 · 0 评论 -
C++ 开发中为什么要使用继承
生活中继承是指孩子继承父亲的财产等。C++使用了这一思想,却又与生活中的继承不一样。在使用继承时,派生类是基类的子集,基类是派生类的超集,例如人类与学生类,人类是一个大的概念,学生首先是人类,其次才是学生,所以学生类可以继承人类。如果两个没有任何关系的类不存在继承关系。C++继承中,将被继承的类称为基类或者父类,将继承的类称为派生类或者子类。文章中将统称基类和派生类。被继承的类称为基类或者父类。继承的类称为派生类或者子类。继承时需要使用权限关键字public, protected或者private。原创 2023-12-18 22:03:22 · 420 阅读 · 0 评论 -
Makefile 应用
linux和windows下Makefile中都使用 “#” 注释。linux下使用rm命令删除文件,windows下使用del命令删除文件。本章节简单的说明了两个Makefile应用场景,但是其强大的功能远非如此。学习完本章节后,后续的课程中将使用Makefile脚本来编译程序,进而巩固Makefile的使用。原创 2023-12-18 22:01:09 · 843 阅读 · 0 评论 -
深入对象指针
在堆上申请的内存,在使用完后一定要释放内存。this指针无需用户定义,编译器自动产生。相同类型不同对象this指针指向不同的对象。原创 2023-12-13 23:41:48 · 887 阅读 · 0 评论 -
const 应用
const允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const。const对象只能调用const成员函数,不能调用普通成员函数。const指针和const引用对象都只能调用对象的常成员函数。普通成员函数与const成员函数可以互为重载。普通对象能调用const成员函数,也能调用普通成员函数。常对象只能调用const成员函数,不能调用普通成员函数。普通对象和const对象都可以访问公有数据成员。原创 2023-12-13 23:48:29 · 860 阅读 · 0 评论 -
深拷贝与浅拷贝
如果不实现拷贝构造函数,系统将自动生成,并且只能做浅拷贝。如果类中存在申请内存操作时一定要重载拷贝构造函数。类中存在指针数据成员时需要使用深拷贝。原创 2023-12-11 22:51:45 · 428 阅读 · 0 评论 -
对象与对象数组
使用对象数组时会调用每个对象的构造函数和析构函数。new与deletenew []与delete []一定要配套使用。不要越界,不管是栈还是堆,访问数组时都不要越界。对象数组指针变量本身就是一个指针。堆上实例化的数组,要注意指针使用方法。如果是做项目,要考虑使用在堆上实例化申请内存,栈空间比堆空间小很多。当对象A中有常量时必须使用初始化列表。当对象A有其他的对象B并且对象B没有默认构造参数时需要使用初始化列表。除了以上两种情况,可以不使用初始化列表,但是推荐使用初始化列表。原创 2023-12-11 22:49:34 · 799 阅读 · 0 评论 -
对象的生离死别
作为C++开发者,必须对内存的分区以及使用了然于心。一个好的构造函数、拷贝构造函数和析构函数可以使程序使用更加稳健。在编写构造函数时需要考虑是否使用explicit关键字修饰。推荐在编写程序时使用初始化列表的方式初始化参数。析构函数时要注意释放堆中的内存,但也要注意避免重复释放内存造成程序崩溃。原创 2023-12-11 22:11:17 · 899 阅读 · 0 评论 -
浅谈类的封装
封装是类的本身属性,类就是将需要的数据以及函数放在(封装)类内部,使用该类实例化的对象可以使用类内部的数据和函数,通常来说学习一样东西只要问三个问题就可以了。原创 2023-12-07 22:09:37 · 854 阅读 · 0 评论 -
初始类与对象
本课程是进一步对类与对象的深入认识,如何定义并实例化一个类,介绍如何使用 `C++` 标准库 `string` 类等。原创 2023-12-07 22:03:02 · 932 阅读 · 0 评论