C++
文章平均质量分 51
killers_999
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++进阶学习(三):std::move的使用
左值、右值、左值引用和右值引用 左值:能被取地址的、有名称的值。 右值:不能被取地址的值,包括临时变量,函数的返回值 int a=2;//a是左值,2是右值 int b=3;//b是左值,3是右值 int c=(a+b);//c是左值,(a+b)是右值 左值引用: 语法:数据类型 & 数据名称=左值; 右值引用(C++11新增特性): 语法:数据类型&& 数据名称=右值; 左值引用对应左值,右值引用对应右值 int a = 2; int b = 3; int& d原创 2021-02-28 14:46:07 · 762 阅读 · 0 评论 -
C++学习进阶(一):四种cast的用法
upcast:派生类转换为基类 downcast:基类转换为派生类 dynamic_cast 语法:dynamic_cast<待转换类型>(待转换数据) dynamic_cast在运行时处理 dynamic_cast不能用于内置基本数据类型的强制转换,主要是用于类的指针或者类的引用的转换上 允许upcast,也允许downcast。在进行downcast时,dynamic_cast会进行类型检查。只有强制转换的指针指向的对象实际类型与将要转换后的类型相同时才能转换成功,还要求基类对象必须含有.原创 2021-02-26 18:17:55 · 995 阅读 · 0 评论 -
C++学习笔记(十九):模板
模板 为了实现泛式编程 两种模板机制:函数模板和类模板 函数模板 建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。 定义一个函数模板: template<typename T>//函数模板用typename,类模板用class.函数模板和类模板都用class也没错 T sum(T a,T b){ return a+b; } 函数模板的调用: //1.自动类型推导 double aa=12.3; double bb=12.4;原创 2021-02-06 17:16:51 · 182 阅读 · 0 评论 -
C++学习笔记(十八):文件操作
文件类型: 文本文件:文件以文本的ASCII码形式存储 二进制文件:文件以文本的二进制形式存储 文件打开方式: 打开方式 功能 ios::in 打开文件用于读取数据。文件不存在则打开出错 ios::out 打开文件用于写入数据。如果文件不存在,则新建该文件,文件原来就存在,则清除原来内容 ios::app 打开文件,用于在其尾部添加数据。如果文件不存在,则新建该文件 ios::ate 打开一个已有的文件,并将文件读指针指向文件末尾。如果文件不存在,则打开出错 ios::t原创 2021-01-28 12:43:57 · 192 阅读 · 0 评论 -
C++学习笔记(十七):多态
分类 静态多态:函数重载和运算符重载,编译阶段确定函数地址(地址早绑定) 动态多态:派生类和虚函数实现运行时多态,运行阶段确定函数地址(地址晚绑定) 动态多态 地址早绑定: class A{ public: void test(){ cout<<"A"<<endl; } }; class aSon:public A{ public: void test(){ cout<<"aSon"<<endl;原创 2021-01-22 19:26:15 · 329 阅读 · 1 评论 -
C++学习笔记(十六):继承
继承的好处:减少重复代码 语法: class 子类(派生类) :继承方式 父类(基类) 继承方式 三种继承方式: public 继承(公有继承) 父类中的public权限在子类中是public权限 父类中的protected权限在子类中是protected权限 父类中的private权限在子类中不可访问 protected 继承(保护继承) 父类中的public权限在子类中是protected权限 父类中的protected权限在子类中是protected权限 父类中的private权限在子类中不可访问原创 2021-01-17 16:44:25 · 199 阅读 · 0 评论 -
C++学习笔记(十五):运算符重载
对于已有运算符重新定义其功能 加号运算符重载 通过成员函数重载加号 class Person{ private : int salary; public: int age; Person(){ } Person(int _age,int _salary){ age=_age; salary=_salary; } Person operator +(const Person &p){ Per原创 2021-01-14 11:10:54 · 180 阅读 · 0 评论 -
C++学习笔记(十四):友元
友元:让一个函数或者一个类,能够访问另一个类中的私有成员 全局函数做友元 class Person{ friend void test(Person p); private : int salary; public: int age; Person(int _age,int _salary){ age=_age; salary=_salary; } }; void test(Person p){ cout<<p原创 2021-01-10 10:08:53 · 144 阅读 · 0 评论 -
C++学习笔记(十三):C++对象模型
成员变量和成员函数 成员变量和成员函数分开存储 只有非静态的成员变量才时类的对象 静态成员变量、静态成员函数、非静态成员函数在内存中只有一份 空对象所占内存空间为:1字节(主要为了区分不同空对象) this指针 this 指针隐含在每一个非静态成员函数内的一种指针常量,并且指向被调用的成员函数所属的对象,可直接使用。 作用: 解决名称冲突 class Person{ private: int age; public: Person(int age){ this->age原创 2021-01-09 10:25:16 · 223 阅读 · 1 评论 -
C++学习笔记(十二):静态成员
静态成员 静态成员变量 语法: static 数据类型 数据名; 特点: 所有对象共享一份数据 在编译阶段分配内存(全局区) 类内声明,类外初始化 如果不调用静态成员变量,则不初始化静态成员变量也可以; 如果调用了静态成员变量,则必须类外进行初始化,否则出错。 class Person{ public: string name; int age; static string nation="China";//错误操作,不能类内初始化 } class Person{ public原创 2021-01-08 10:59:53 · 197 阅读 · 0 评论 -
C++学习笔记(十一):初始化列表、类成员
初始化列表 语法:类名():成员属性1(值1),成员属性2(值2)… {函数体} class Person{ string name; int age; public: Person(string _name,int _age):name(_name),age(_age){ } }; 类作为成员 语法: class A{ . . . }; class B{ A a; . . }; 注意事项: 在A作为B的成员时,对B进行实例化,先调用A的构原创 2021-01-08 10:56:44 · 189 阅读 · 0 评论 -
C++学习笔记(十):构造函数和析构函数
构造函数和析构函数 构造函数:给对象进行初始化,主要为对象的成员属性。 析构函数:清理对象。 必须有构造函数和析构函数,一般控制权限都是public。如果用户不提供,则使用编译器提供的构造函数和析构函数,编译器提供的构造函数和析构函数是空实现(对成员属性什么都不做)。 构造函数和析构函数编译器自动调用 先创建构造函数的实例后调用析构函数 构造函数: 语法:类名( ) { } 没有返回值,也不需要写void 函数名称和类名相同 构造函数可以有参数,也可以重载 调用对象时自动调用,且只调用一次。原创 2021-01-08 10:54:24 · 228 阅读 · 0 评论 -
C++学习笔记(九):封装
c++面向对象的三个特性:封装、继承和多态。 封装 意义: 将属性和行为作为一个整体,表现生活中的整体。 将属性和行为加以权限控制。 属性:用数据描述 行为:用函数描述 权限: public(公共权限):类内可以访问,类外也可以访问。 protected(保护权限):类内可以访问,类外不可以访问。儿子可以访问父亲的保护权限内容。 private(私有权限):类内可以访问,类外不可以访问。儿子不可以访问父亲的私有权限内容。 成员属性一般是private 意义: 可以自己控制读写权限 读操作:获取成员属原创 2021-01-07 16:21:15 · 135 阅读 · 0 评论 -
C++学习笔记(八):函数高级
函数参数默认值 语法:返回值类型 函数名 (形参 = 默认值){ } bool cmp(int b,const int a=20){ return a<b; } 注意事项: 函数调用时传入数据,则使用传入数据,没有传入数据时使用默认值。 如果某个形参有默认值,其后面所有形参必须有默认值。 函数声明和函数实现,只能有一个有参数默认值。 函数占位参数 语法: 返回值类型 函数名 (形参类型){ } int add(int a,int b,int ){//最后一个就是占位参数 } .原创 2021-01-04 13:25:35 · 147 阅读 · 0 评论 -
C++学习笔记(七):引用
作用:给变量起别名 引用的语法 语法: 数据类型 &别名 = 原名; int a=10; int &b = a; b=20;//此时a=b=20 引用的注意事项 引用必须初始化 int &b = a;//√ int &c;//×,未初始化 引用一旦初始化后就不能更改 引用必须引一块合法的内存空间 int& ref=10;//错误操作 const int& ref=10; //正确操作,相当于int temp=10;const int &原创 2021-01-04 12:30:11 · 205 阅读 · 0 评论 -
C++学习笔记(六):程序的内存模型
程序运行前有代码区和全局区,运行后才有栈区和堆区。 代码区 二进制存放cpu执行的机器指令。 特点:共享(内存中只有一份)、只读 全局区 存放全局变量、静态变量和常量等 常量包括字符串常量和const修饰的常量 const修饰的常量包括const修饰的全局变量和const修饰的局部变量。const修饰的局部变量不放在全局区。 栈区 存放局部变量,形参 不要返回局部变量的地址。 堆区 程序员分配释放,如果程序员不释放,操作系统将会在程序结束后释放。 new的数据放在堆区。 new 作用:动态申请内存 语法:原创 2021-01-03 18:33:32 · 131 阅读 · 0 评论 -
C++学习笔记(五):指针
指针可以用于保存一个地址。 指针的定义 语法:数据类型 * 指针变量名 = &变量名 指针的使用 指针前加 * 代表解引用,找到指针指向的内存中的数据 指针所占内存 在32位系统下,无论是什么数据类型,指针所占内存都是4个字节 64位系统下,指针所占内存都是8个字节 空指针 int *p = NULL;//指针变量指向内存中编号为0的空间 空指针不能被访问,因为编号为0的空间被系统占用,用户不能访问。 野指针 指针变量指向非法的内存空间 const修饰指针 常量指针 语法:const 数据类型原创 2021-01-03 13:33:56 · 208 阅读 · 0 评论 -
C++学习笔记(四):函数
函数定义的语法 返回值类型 函数名 (参数列表){//函数定义的参数为形参 函数体语句 return表达式 } 函数调用的语法 函数名(参数)//函数调用的参数为实参 调用函数时,将实参的值传给形参。 形参的改变不会影响实参。 函数的声明 函数在定义之前先告诉编译器函数的存在。 语法: 返回值类型 函数名(参数列表); 函数的声明可以多次,函数的定义只能由一次。 函数的分文件编写 在头文件(.h文件)写函数的声明,在源(.cpp)文件写函数的定义。 ...原创 2020-12-29 17:48:59 · 124 阅读 · 0 评论 -
C++学习笔记(三):运算符
算数运算符 运算符号 功能 + 做单目运算符表示正数,做双目运算符表示加法 - 做单目运算符表示负数,做双目运算符表示减法 * 乘法 / 除法 % 取模运算(小数不允许做取模运算) ++ i++表示先进行表达式运算再将i的值增加1,++i表示先将i的值增加1再进行表达式运算 - - i- -表示先进行表达式运算再将i的值减少1,- -i表示先将i的值减少1再进行表达式运算 赋值运算符 运算符号 功能 = 将右值赋给左值 += 将左值加上右值再赋原创 2020-12-29 11:29:49 · 191 阅读 · 0 评论 -
C++学习笔记(二):数据类型
整型 整型用于存储整数 数据类型 占用空间 short(短整型) 2字节 int(整形) 4字节 long(长整型) Windows为4字节,Linux32位为4字节,Linux64位为8字节 long long(长长整型) 8字节 浮点型 浮点型数据一般用于存储小数 数据类型 占用空间 有效数字范围 float(单精度) 4字节 7位有效数据 double(双精度) 8字节 15~16位有效数据 字符型 char类型用于存储单个字符,占用空间为1字节原创 2020-12-28 16:40:51 · 115 阅读 · 0 评论 -
C++学习笔记(一):变量、常量和命名规则
C++学习笔记(一):变量、常量和命名规则 变量 变量的意义:方便管理内存空间 变量语法:数据类型 变量名 = 变量初始值; 常量 常量的意义:用于记录程序中不可更改的数据 常量的语法: 宏常量:#define 常量名 常量值 const 数据类型 常量名 = 常量值; const 和define 定义常量的区别: define 在编译的预处理阶段起作用,const在编译运行的时候起作用。 define无脑进行替换,不进行类型检查,const进行类型检查。 define占用代码段的空间原创 2020-12-28 15:26:44 · 1204 阅读 · 0 评论
分享