自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 C++入门学习十五 移动语义

5的规则:只要声明了除默认构造函数外的5种特殊构造函数中的一种,就应该声明全部5种。左值lvalue:持久存在的值,可在以后获取其地址。右值rvalue:暂时存在的值。左值引用:我们平时使用的引用一般都是左值引用&。std::move():将左值转换成右值。1的规则:尽可能避免实现任何特殊成员函数。右值引用:两个&符号,即&&

2023-12-02 16:35:27 32

原创 C++入门学习十四 类模板

注意:在类外部编写成员函数时,第一行必须加上template 从非const变为const:std::as_const。从const变为非const:const_cast下面是const版本来实现非const重载。

2023-11-26 18:25:35 58 1

原创 C++入门学习十三 运行时错误和异常

noexcept:在函数头中追加这个关键字,表示不会抛出异常。只包含throw关键字可以重新抛出异常,在catch中捕获的异常会传给下一个try。派生类类型的异常会隐式转换为基类类型的异常,会被基类类型的catch捕获。注意:这里catch需要按引用捕获,不然只会捕获基类。异常的黄金规则:按值抛出异常,按引用捕获异常。catch(...):捕获所有异常。RAII:资源获取即初始化。throw:主动排除异常。catch:捕获的异常。try:执行的代码块。可以用类对象作为异常。

2023-11-19 16:31:10 41

原创 C++入门学习十二 多态性

多态性:基类指针在运行期间确定类型,并且必须指定基类成员函数为虚函数,然后子类对该成员函数进行重写。还有一个很重要的点:无论重写函数的访问修饰符是什么,都由基类的虚函数的访问修饰符决定。override:可以在子类需要重写的成员函数添加override来限定它是重写。虚函数在基类声明时带有默认实参值,通过基类指针访问,总是接收基类版本的实参值。重写:子类的函数名称和其他函数签名都和父类相同,要求函数参数也相同。多态会创建一个特殊的指针,指向一个为类创建的函数指针表vtable。指针和类对象之间的转换。

2023-11-18 17:22:29 40 1

原创 C++入门学习十一 继承

protected:声明为protected的成员变量,不能在类外访问 ,但可以由声明为friend的成员函数访问。也可以由派生类的成员函数访问。组合:一个类对象包含另外一个类对象,但是不能独立存在,例如room组合成house,但是离开了house,room不存在。在子类中public下,虽然基类是private继承,但是把父类的public成员函数声明为共有,也可以访问。创建派生类都会先调用基类的默认无参构造函数,在调用自己的构造函数。把派生类对象转换为基类对象,会损失一些派生类独有的成员变量。

2023-10-14 18:00:10 49 1

原创 C++入门学习十 运算符重载

如果重载了了 < 和 == ,可以使用utility头文件,在rel_ops命名空间中,自动生成=,!但是需要注意,重载的< 和 ==函数对象:重载函数调用运算符()的类对象,也被称为functor。// 重载运算符+,表示两个盒子对象的和,生成一个新的盒子。把标准运算符(+,-,*,\)作用于类类型的对象。关键字operator + 重载的运算符。在类的成员函数中定义。

2023-10-14 15:37:57 57 1

原创 C++ 如何输出系统时间

这里关于的时间相关的内容的一些总结,当前有一些帖子标题写的C++,但是实际用的C的库,希望在这里区分一下。如有疑问,可以及时联系笔者,讨论讨论。C++关于时间的库事实上有两个,C++ 11之前的<ctime>,和C++ 11之后<chrono>。在介绍这两个库之前,首先说一下什么是计算机的时间。其实只要记住什么是UNIX时间戳?GMT?UTC?什么是夏令时就可以了?这里不展开讲,简单说一下,便于理解。UNIX时间戳:格林尼治时间1970年1月1日00:00:00到现在的秒数。

2023-10-10 21:46:04 234 1

原创 UML面向对象程序设计

一般由三部分组成:类名,类的属性(Attributes),类的操作(Operations)可见性:public(+),private(-),protected(#)可见性:名称(参数列表)[:返回类型]可见性 名称:类型[= 缺省值]

2023-09-02 16:24:28 42

原创 C++入门学习九 类

可以在一个类的基础上,续写另一个类,最开始的类叫基类,续写的类叫派生类,派生类有基类的所有属性和方法,并且可以增加自己独有的特性。C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的。类的构造函数只有一个,可能会有问题。:定义一种数据类型为一个类,然后把和这种数据类型相关的数据和函数打包到这个类中。使用class关键字定义类,类名使用大写,类成员在花括号中,注意,在构造函数的成员初始化列表中调用前一个构造函数的所有的值。

2023-08-19 17:49:51 94

原创 C++入门学习八 函数模板&程序文件&预处理命令

template:函数模板关键字typename:表示T是类型显示指定模板定义特例中参数为空decltype和拖尾返回类型模板参数默认值。

2023-07-22 17:20:06 51 1

原创 C++入门学习七 定义函数

optional.value_or(arg):判断optional是否是无效值,如果有效返回该值,无效返回arg的值。指定为实参的变量值或常量值不会传递给函数,而是创建实参副本,把这些副本传递给函数。一般不要为重载函数指定默认参数,不然,在没有参数的时候,编译器不知道调用哪个。optional.value():返回该optional的值。注意:不能把参数类型为type的重载为type&的函数,编译器无法区分。第一次执行函数时创建,后面不再重复重复创建,用于函数多次调用,传递该值。

2023-07-15 17:01:11 76 1

原创 C++入门学习六 操作字符串

可以在后面加s,转换成string类型,但是需要using namespace string_literals;str1.compare(str2),比较str1和str2大小,返回int类型,str1 > str2,返回整数,等于返回0,小于返回负整数。find_first_not_of:从头开始,第一个非集合中的。find_last_not_of:从尾开始,第一个非集合中的。两种方式c_str()和data()find_first_of:从头开始。find_last_of:从尾开始。

2023-07-08 18:20:16 61 1

原创 C++入门学习五 指针和引用

不可以修改"Hello"的值,p[0] = 'M'会报错,但是可以修改指针指向的内容p = "World"注意:delete释放内存后,没有改变指针,指针仍包含已分配的内存地址,但是该地址已经自由了,所以指针包含一个伪造的地址,称为。这章介绍指针和引用,指针和引用是面向对象编程的基础,十分重要,能把这章彻底搞清楚,对C++的理解就会更加升深入。指向数组的指针加1,表示指向数组的下一个元素,表达式p+n,表示p中的地址加上n*sizeof(指针指向的类型)输出一个指针指向的字符串,只需要输出该指针名。

2023-07-01 16:48:34 62

原创 C++入门学习四 数组和循环

一般使用sizeof(nums)/ziseof(nums[0])来计算数组的元素个数。while:只要特定条件为true,开始执行,如果开始为false,不执行。do-while:迭代结束时检查,至少执行一次。continue:跳过当前循环,开始下一次循环。for:为一个元素集合中每个元素执行一次迭代。向量vector:可以不需要知道大小。数组array:需要知道大小。数组:可以储存相同类型的数据项。break:跳出整个循环。基于范围的for循环。do-while循环。

2023-06-23 18:22:42 68 1

原创 C++入门学习三 决策

如何比较数值关系运算符返回bool类型truefalse如果初始化是{}为空,数值变量初始化为0,bool初始化为falsestd::boolalpha:可以把bool类型显示为true和falsestd::noboolalpha:恢复默认。

2023-06-17 20:12:37 53 1

原创 C++入门学习二 处理基本数据类型

首先可以根据属性的位数,设置一个mask,比如大小是后六位,那么根据按位与运算的规则,这六位设为1,其余设为0,得到一个数0000 0000 0011 1111,换算成16进制,前面8位社区,0x3f。比如我们设计一个16位的数据来储存一个汽车的属性,前8位代表样式,第9位代表是否采用新能,1代表是,0代表不是,第10位代表是否采用自动挡,1代表自动挡,0表示手动挡,后6位表示汽车的大小。注意:带符号的右移,一般会在最高位填充符号位,比如负数右移运算,最高位填充1。无符号数则没有这种情况。

2023-06-10 20:19:34 46

原创 C++入门学习一 基本概念&基本数据类型

之前一直使用python,现在会用到C++,所以从0开始学习,在这里做个简单记录,希望能帮到同样需要学习C++的人。学习方式:书籍《C++17 入门经典(第五版)》加上自我总结的方式。

2023-06-03 17:27:03 59

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除