- 博客(22)
- 收藏
- 关注
原创 14---14.1 STL初识
学习目标:vector中存放自定义数据类型,并打印输出public:int m_Age;//只能通过全局函数重载左移运算符cout << "姓名:" << p.m_Name << "年龄:" << p.m_Age << endl;Person p1("嘟嘟", 18);Person p2("小白", 20);it!= p.end();return 0;不重载左移运算符这样写也可以。
2025-03-20 12:54:27
1005
1
原创 13.2类模板
使用:Person <string,int> p1 ("嘟嘟",18);加上作用域 然后记得加上模板的参数列表,让编译器知道这是类模板的函数。2.类模板在模板参数列表中可以有默认参数(函数模板不允许)1.类模板没有自动类型推导的使用方式,只能用显示指定方式。全局函数类外实现---需要提前让编译器知道全局函数的存在。全局函数类内实现---直接在类内声明友元即可。默认 AgeType 为整型。一般用第一种:指定传入的类型。
2024-11-14 16:44:12
746
原创 13模板---13.1函数模板
typename---表明其后的符号是一种数据类型,可以用 class 代替。C++为了解决这种问题,提供模板的重载,可以为这些特定的类型提供具体化的模板。可以不具体制定,用一个虚拟的类型来代表,可以提高复用性,将类型参数化。C++另一种编程思想称为 泛型编程,主要利用的技术就是模板。1.如果函数模板和普通函数都可以实现,优先调用普通函数。4.如果函数模板可以产生更好的匹配,优先调用函数模板。T-通用的数据类型,名称可以替换,通常为大写字母。模板就是建立通用的模具,大大提高复用性。模板的通用性不是万能的。
2024-11-14 16:42:56
373
原创 11.7多态
animal 调用 speak 函数,走 cat 的虚函数表,里面记录了 cats peak 的入口地址。多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码。在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容。纯虚函数语法: virtual 返回值类型 函数名(参数列表)=0;利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶。分别利用普通写法和多态技术,设计实现两个操作数进行运算的计算器类。类名::~类名( ){ }
2024-11-14 15:18:29
515
原创 11.6继承
问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?子类除了拥有父类的共性之外还有自己的特性,可以考虑用继承的技术减少重复代码。父类中私有成员属性确实访问不到,但是被继承下去了,只是被编译器隐藏了。语法:class 子类 :继承方式 父类1,继承方式 父类2...第一个::通过类名访问 第二个::访问父类作用域下的成员。Son::Base::m_A ——访问的是父类的 m_A。问题:继承中同名的静态成员在子类对象上如何进行访问?问题:从父类继承过来的成员,哪些属于子类对象?
2024-11-14 15:17:55
633
原创 11.3C++对象模型和this指针
如果用到了 this 指针,需要加以判断(判空)保证代码的健壮性。C++通过提供特殊的对象指针,this 指针解决上述问题。每个非静态成员函数只会诞生一份函数实例,也就是说。在 C++中,类内的成员变量和成员函数分开存储。这一块代码是如何判断哪个对象调用的自己呢?只有非静态成员变量才属于类的对象上。空对象占内存空间 1 个字节。的,但是也要注意有没有用到。
2024-11-14 15:13:40
386
原创 11类和对象--11.1封装
C++面向对象的三大特性为:继承、封装、多态C++认为万事万物皆为对象,对象上有其属性和行为具有相同性质的对象,我们可以抽象为类,人属于人类,车属于车类。
2024-11-12 22:45:00
330
原创 10 函数高级
C++中函数的形参列表里可以有占位参数用来做占位,调用函数时必须填补该位置。在 C++中,函数的形参列表中的形参是可以有默认值的。语法:返回值类型 函数名(参数= 默认值){ }语法:返回值类型 函数名(数据类型){ }:函数的返回值不可以作为函数重载的条件。
2024-11-12 22:30:00
302
原创 09 C++中的引用
以后在函数中达到形参修饰实参的效果——可以用地址传递和引用传递,且引用的语法更简单。引用的本质在 C++内部实现是一个指针常量,所有的指针操作编译器帮我们做了。在函数形参列表中,可以加 const 修饰形参,防止形参改变实参。作用:函数传参时,可以利用引用的技术让形参修饰实参。用法:函数调用可以作为左值(等号左边的值)作用:常量引用主要用来修饰形参,防止误操作。作用:引用可以作为函数的返回值存在。语法:数据类型 &别名 = 原名。优点:可以简化指针修改实参。(只能改值不能改指向)
2024-11-12 18:12:08
252
原创 08程序的内存模型
堆区开辟的数据-由程序员手动开辟、手动释放,释放利用关键字 delete。注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放。不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程。注意利用delete释放堆区数组的时候要加[ ]才可以。利用 new 创建的数据,会返回该数据对应类型的指针。由编译器自动分配释放,存放函数的参数值,局部变量等。C++中利用 new 操作符在堆区开辟数据。在程序编译后,生成了exe可执行程序,语法:new 数据类型。
2024-11-12 18:11:22
350
原创 07 结构体
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型语法:struct 结构体名{ 结构体成员列表 };//成员列表int age;int score;}s3;//创建变量时关键字struct可以省略(结构体定义的时候不可以省略)s1.name = "嘟嘟";//还可以在定义结构体时顺便创建结构体变量s3.name = "摇粒绒";s3.age = 7;return 0;
2024-11-12 18:09:48
272
原创 06 指针
粗暴理解为指针就是一个地址//指针定义:数据类型* 指针变量名int a = 10;//p存放a的地址//使用指针:可以通过解引用的方式来找到指针指向的内存//指针前加*表示解引用,找到指针指向内存中的数据//10cout
2024-11-12 18:08:45
240
原创 04 数组
第二个元素位置和第一个差四个字节-证明是占连续空间数组名是常量,不可以进行赋值操作(已经指向首地址了)行列可以省略行不可以省略列!//二维数组定义方式{1,2,3},{4,5,6}//行可以省略,列不可以省略,不然无法判断一行几个数//外层循环行,内层列i < 2;i++)j < 3;j++)
2024-11-12 18:06:30
306
原创 03程序流程结构
if(条件){满足条件执行的语句}else{不满足条件执行的语句};缺点:switch在判断的时候只能是整型或者字符型,不能是区间。case里如果没有break,程序会一直向下执行。在C++中三目运算符返回的是变量,可以继续赋值。if语句里可以嵌套if---筛选条件更加精准。程序必须提供跳出循环的出口,否则会出现死循环。包含头文件#include if(条件){满足条件执行的语句};continue并没有使循环全部结束。优点:结构清晰执行效率高。和这个是一个意思哈哈哈哈。
2024-11-12 18:05:29
394
原创 C++学习路线(求补充)
研二女本硕211 明年找工作 看网上各种经验帖总结了个C++自学路线 求各位大佬指正 时间有点紧不知道学这些够不够。
2024-11-12 14:25:27
321
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人