
C++
文章平均质量分 67
算法导航
这个作者很懒,什么都没留下…
展开
-
C++核心编程
*作用:**函数名可以相同,提高复用性同一个作用域下函数名称相同函数参数类型不同或者个数不同或者顺序不同函数的返回值不可以作为函数重载的条件//函数重载需要函数都在同一个作用域下cout << "func 的调用!" << endl;cout << "func (int a) 的调用!" << endl;cout << "func (double a)的调用!" << endl;cout << "func (int a ,double b) 的调用!" << endl;原创 2023-10-12 09:26:02 · 112 阅读 · 0 评论 -
C++提高编程
学习目标:vector中存放自定义数据类型,并打印输出//自定义数据类型public:mAge = age;//存放对象//创建数据it!= v.end();it++) {//放对象指针//创建数据it!= v.end();test02();return 0;原创 2023-10-11 14:00:49 · 214 阅读 · 1 评论 -
C++基础入门
所谓数组,就是一个集合,里面存放了相同类型的数据元素**特点1:**数组中的每个数据元素都是相同的数据类型**特点2:**数组是由连续的内存位置组成的数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};数据类型 数组名[ ] = { 值1,值2 ...};示例//定义方式1//数据类型 数组名[元素个数];//利用下标赋值//利用下标输出//第二种定义方式//数据类型 数组名[元素个数] = {值1,值2 ,值3 ...};原创 2023-10-10 10:04:44 · 95 阅读 · 0 评论 -
多线程基础
原子操作就是多线程程序中“最小的且不可并行化的”的操作,也就是说多个线程访问该资源时,有且仅有唯一一个线程在对这个资源进行操作。当在某个线程中需要对某一变量进行操作时,先加锁,再进行操作,结束后再解锁。多线程的执行是同时、无序的,那么当多个线程同时操作一个变量时,可能就会引发错误。:一个进程中可以并发多个线程,每条线程并行执行不同的任务。,此时主函数被阻塞,无法继续向下执行,直至该线程结束。:进程是正在运行的程序的实例,一个程序只有一个进程;(3)当多个线程并发时,他们的执行顺序时。,应该在程序结束前再。原创 2023-10-09 09:52:01 · 73 阅读 · 0 评论 -
Effective C++笔记
编译器就会自动为类创建默认构造函数、复制构造函数、copy assignment 操作符以及析构函数;自己定义之后,编译器就不再提供该函数了。注意,是。原创 2023-10-08 09:43:51 · 99 阅读 · 0 评论 -
CMake 笔记
/:当前目录,../:上一级目录绝对路径。原创 2023-10-06 14:45:48 · 265 阅读 · 0 评论 -
C++ primer plus--探讨 C++ 新标准
(1)C++11 扩大了列表初始化的适用范围,使用初始化列表时,可以不加等号。(2)auto 可自动推断类型。(3)nullptr:空指针是不会指向任何有效数据的指针。原创 2023-10-05 10:49:00 · 131 阅读 · 0 评论 -
C++ primer plus--输入、输出和文件
C++ 把输入和输出看做字节流。输入时,程序从输入流中抽取字节;输出时,程序将字节插到输出流中。缓冲区是内存中的临时存储区域,是程序与文件或其他 I/O 设备之间的桥梁。原创 2023-10-04 20:13:58 · 197 阅读 · 1 评论 -
C++ primer plus--string 类和标准模板库
需要注意的是,当 weak_ptr 类型指针的指向和某一 shared_ptr 指针相同时,weak_ptr 指针并不会使所指堆内存的引用计数加 1;可以通过 weak_ptr 获取 shared_ptr 的状态信息,例如:有多少指向相同的 shared_ptr 指针、shared_ptr 指针指向的堆内存是否已经被释放等等。该指针在实现上采用的的是引用计数机制,当某一个指针放弃了该内存的使用权,计数减 1,直至为 0 时,内存释放。:最简单的序列类型,使用最多,支持数组表示法和随机访问。原创 2023-10-03 16:40:59 · 130 阅读 · 0 评论 -
C++ primer plus--友元、异常和其他
注意:当前一个 catch块 捕获时,后面的 catch 即使也匹配,也不会执行。当 n = 0 时,抛出 -1(int 型异常),依次寻找匹配的 catch 类型,最终被。: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常。(1)在 C++ 中,可以将类声明放在另一个类中,在另一个类中声明的类称为嵌套类。(int e) 语句捕获,输出 “catch(int)”。当 n 不等于 0 时,没有异常,catch 块不会执行;(2)三个关键字:try catch throw。原创 2023-10-02 10:55:12 · 88 阅读 · 0 评论 -
C++ primer plus--C++ 中的代码重用
由于模板不是函数,不能单独编译,因此,可以将所有模板信息(即声明和定义放在一个文件)放在一个头文件中。使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员。多继承容易让代码逻辑复杂、思路混乱,慎用。原创 2023-10-01 12:30:50 · 66 阅读 · 0 评论 -
C++ primer plus-- 类继承
参考:https://www.runoob.com/cplusplus/cpp-polymorphism.html和 http://c.biancheng.net/cpp/biancheng/view/2988.html通过基类指针可以调用派生类从基类继承过来的函数,但如果想每个派生类中继承来的函数,有不同的定义,就需要将该函数在基类中用 virtual 修饰,这样,基类指针就可以根据实际指向的对象调用各自的函数(相当于将继承来的函数覆盖),从而实现了“一个接口,多种方法”。原创 2023-09-30 16:49:40 · 61 阅读 · 0 评论 -
C++ primer plus--类的动态内存分配
因为类可以创建多个对象,不同的对象其 const 数据成员的值可以不同。所以不能在类的声明中初始化 const 数据成员,因为类的对象没被创建时,编译器不知道 const 数据成员的值是什么。大多数情况下,其作用是实现从源对象到目标对象逐个字节的复制,即使得目标对象的每个成员变量都变得和源对象相等。(1)static 类成员初始化:static 类成员是属于整个类的,作用于所有对象。如果返回的对象是被调用函数中的局部变量,则不应按引用方式返回他,因为在被调用函数执行完毕时,就被析构函数释放。原创 2023-09-29 16:51:45 · 58 阅读 · 0 评论 -
C++ primer plus--使用类
只能重载有效的 C++ 运算符,不能是虚构的新的符号,例如 @(不是运算符)。通过让函数成为类的友元,可以赋予该函数与类的成员函数相同的访问权限(可以理解为该类的“朋友”)。1)创建友元的第一步是将其原型放在类声明中,并在原型声明前加上关键字 friend。(1)在为类重载二元运算符时(带两个参数的运算符),常常需要友元。(1)接受一个参数的构造函数为将类型与该参数相同的值转换为类提供了蓝图。要进行相反的转换,必须使用特殊的C++运算符函数——转换函数。(2)关键字 explicit(译:显式)原创 2023-09-27 21:27:57 · 73 阅读 · 0 评论 -
C++ primer plus--抽象和类
编译器才会提供默认构造函数;3)只要定义了构造函数,编译器就不会再提供默认构造函数了,所以为了防止出现 testClass a;这样的错误,最好再手动定义一个默认构造函数。4)定义默认构造函数有两种方式,如上述代码展示的,一是定义一个无参的构造函数,二是定义所有参数都有默认值的构造函数;5)一个类只能有一个默认构造函数,也就是说上述两种方式不能同时出现,一般选择 testClass();这种形式的默认构造函数。6)隐式调用默认构造函数时,没有圆括号。原创 2023-09-25 19:32:24 · 80 阅读 · 0 评论 -
C++ primer plus--内存模型和名称空间
如果想将函数中此变量的值保存至下一次调用时,最容易想到的方法是定义为全局的变量,但定义一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅只受此函数控制)。(1)链接性为外部的名称可在文件间共享,链接性为内部的名称只能由一个文件中的函数共享。,在一个文件内定义的全局变量,在另一个文件中,通过 extern 全局变量名的声明,就可以使用全局变量。局部变量只能作用于函数内部,执行时,编译器为其在栈上分配空间,结束时,便会被释放。1)全局变量默认是有外部链接性的,原创 2023-09-24 15:57:14 · 70 阅读 · 0 评论 -
C++ primer plus--函数探幽
(1)函数重载的关键是函数的参数列表,也称为函数特征标,如果参数数目或参数类型不同,则特征标也不同。(1)编译器将指定的函数体(内联函数)插入并取代每一处调用该函数的地方,从而节省了每次调用函数带来的额外时间开支。(4)函数返回值时会产生一个临时变量作为函数返回值的副本,而返回引用时不会产生值的副本,因此也要注意,不可返回局部变量的引用,因为其只在局部范围内有效,范围外即被销毁。(1)引用是已定义变量的别名,主要用途是作为函数的形参,将引用变量作为参数,函数将使用原始数据,而不是副本。原创 2023-09-19 19:34:19 · 65 阅读 · 0 评论 -
C++ primer plus--函数
(3)数组作为参数时,一般将指向数组起始处的指针作为第一个参数,将数组长度作为第二个参数,这样便于传入不同长度的数组。(2)按值传递,传递的是其副本,如果结构体很大,将会产生很大的开销。(1)与数组名就是数组第一个元素的地址不同,结构名只是结构体的名称,要获得其地址,就必须使用 &。arr 是数组的第一个元素的地址,[] 表示任何长度的数组都可以传递给该函数。(1)按值传递,传递的是实参的副本,相当于将值赋给形参,并不影响实参的值。(2)由于传递的是实参数组的地址,所以,修改形参也会同样的影响实参的值。原创 2023-09-16 20:07:24 · 56 阅读 · 0 评论 -
C++ primer plus--分支语句和逻辑运算符
(1)case 的标签必须是整数常量表达式,最常见的标签是 int 和 char 型,也可以是枚举量。(2)case 后如果没有 break,将不会跳出,而是依次向下执行。outFile 可以使用 cout 可使用的任何方法.outFile 可以使用 cin 可使用的任何方法.C++ 中需包含 “cctype” 头文件。原创 2023-09-12 09:08:00 · 114 阅读 · 0 评论 -
C++ primer plus--循环和关系表达式
循环,即判定测试表达式,再决定是否执行循环体;而 do-while 是。循环,意味着将先执行循环体,再判定测试表达式,决定是否继续执行循环体。基于范围的for 循环,这对于数组或容器很有效,例如。for 循环和 while 循环是。原创 2023-09-10 11:52:58 · 136 阅读 · 0 评论 -
C++ primer plus--复合类型
共用体(union)能够储存不同的数据类型,但只能同时储存其中一种类型,也就是同一时刻,只能存储里面的一个成员。(3)一般来说,如果给cout一个指针,他将打印地址。(2)将数组指针加 1 ,相当于加上该数据类型所占的字节数,也就是说,指针将指向下一个元素的地址。而显示 dog 数组时,会一直打印,直至遇到后续内存中的’\0’才会停止。(1)指针是一个变量,其储存的是指针的地址,而不是值本身。(1)vector:动态数组,操作方便,但效率较低。(2)array:长度固定的数组,但效率更高。原创 2023-09-08 20:40:18 · 88 阅读 · 0 评论 -
C++ primer plus--处理数据
2、三种浮点类型:float、double、long double。面向对象编程(OOP)的本质是设计并扩展自己的数据类型。2)可以使用作用域规则将定义限制在特定的函数或文件中;1、浮点数可以表达更大或更小的数,如 E 表示法,3)const 可以用于复杂类型,如数组、结构体。1、const 比 #define 更好。1)const可以明确指定类型;原创 2023-09-06 16:58:23 · 81 阅读 · 0 评论