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 · 721 阅读 · 0 评论 -
C++学习进阶(一):四种cast的用法
upcast:派生类转换为基类downcast:基类转换为派生类dynamic_cast语法:dynamic_cast<待转换类型>(待转换数据)dynamic_cast在运行时处理dynamic_cast不能用于内置基本数据类型的强制转换,主要是用于类的指针或者类的引用的转换上允许upcast,也允许downcast。在进行downcast时,dynamic_cast会进行类型检查。只有强制转换的指针指向的对象实际类型与将要转换后的类型相同时才能转换成功,还要求基类对象必须含有.原创 2021-02-26 18:17:55 · 930 阅读 · 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 · 164 阅读 · 0 评论 -
C++学习笔记(十八):文件操作
文件类型:文本文件:文件以文本的ASCII码形式存储二进制文件:文件以文本的二进制形式存储文件打开方式:打开方式功能ios::in打开文件用于读取数据。文件不存在则打开出错ios::out打开文件用于写入数据。如果文件不存在,则新建该文件,文件原来就存在,则清除原来内容ios::app打开文件,用于在其尾部添加数据。如果文件不存在,则新建该文件ios::ate打开一个已有的文件,并将文件读指针指向文件末尾。如果文件不存在,则打开出错ios::t原创 2021-01-28 12:43:57 · 158 阅读 · 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 · 293 阅读 · 1 评论 -
C++学习笔记(十六):继承
继承的好处:减少重复代码语法:class 子类(派生类) :继承方式 父类(基类)继承方式三种继承方式:public 继承(公有继承)父类中的public权限在子类中是public权限父类中的protected权限在子类中是protected权限父类中的private权限在子类中不可访问protected 继承(保护继承)父类中的public权限在子类中是protected权限父类中的protected权限在子类中是protected权限父类中的private权限在子类中不可访问原创 2021-01-17 16:44:25 · 185 阅读 · 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 · 164 阅读 · 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 · 119 阅读 · 0 评论 -
C++学习笔记(十三):C++对象模型
成员变量和成员函数成员变量和成员函数分开存储只有非静态的成员变量才时类的对象静态成员变量、静态成员函数、非静态成员函数在内存中只有一份空对象所占内存空间为:1字节(主要为了区分不同空对象)this指针this 指针隐含在每一个非静态成员函数内的一种指针常量,并且指向被调用的成员函数所属的对象,可直接使用。作用:解决名称冲突class Person{private: int age;public: Person(int age){ this->age原创 2021-01-09 10:25:16 · 200 阅读 · 1 评论 -
C++学习笔记(十二):静态成员
静态成员静态成员变量语法: static 数据类型 数据名;特点:所有对象共享一份数据在编译阶段分配内存(全局区)类内声明,类外初始化如果不调用静态成员变量,则不初始化静态成员变量也可以;如果调用了静态成员变量,则必须类外进行初始化,否则出错。class Person{public: string name; int age; static string nation="China";//错误操作,不能类内初始化}class Person{public原创 2021-01-08 10:59:53 · 161 阅读 · 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 · 169 阅读 · 0 评论 -
C++学习笔记(十):构造函数和析构函数
构造函数和析构函数构造函数:给对象进行初始化,主要为对象的成员属性。析构函数:清理对象。必须有构造函数和析构函数,一般控制权限都是public。如果用户不提供,则使用编译器提供的构造函数和析构函数,编译器提供的构造函数和析构函数是空实现(对成员属性什么都不做)。构造函数和析构函数编译器自动调用先创建构造函数的实例后调用析构函数构造函数:语法:类名( ) { }没有返回值,也不需要写void函数名称和类名相同 构造函数可以有参数,也可以重载调用对象时自动调用,且只调用一次。原创 2021-01-08 10:54:24 · 206 阅读 · 0 评论 -
C++学习笔记(九):封装
c++面向对象的三个特性:封装、继承和多态。封装意义:将属性和行为作为一个整体,表现生活中的整体。将属性和行为加以权限控制。属性:用数据描述行为:用函数描述权限:public(公共权限):类内可以访问,类外也可以访问。protected(保护权限):类内可以访问,类外不可以访问。儿子可以访问父亲的保护权限内容。private(私有权限):类内可以访问,类外不可以访问。儿子不可以访问父亲的私有权限内容。成员属性一般是private意义:可以自己控制读写权限读操作:获取成员属原创 2021-01-07 16:21:15 · 122 阅读 · 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 · 131 阅读 · 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 · 181 阅读 · 0 评论 -
C++学习笔记(六):程序的内存模型
程序运行前有代码区和全局区,运行后才有栈区和堆区。代码区二进制存放cpu执行的机器指令。特点:共享(内存中只有一份)、只读全局区存放全局变量、静态变量和常量等常量包括字符串常量和const修饰的常量const修饰的常量包括const修饰的全局变量和const修饰的局部变量。const修饰的局部变量不放在全局区。栈区存放局部变量,形参 不要返回局部变量的地址。堆区程序员分配释放,如果程序员不释放,操作系统将会在程序结束后释放。new的数据放在堆区。new作用:动态申请内存语法:原创 2021-01-03 18:33:32 · 106 阅读 · 0 评论 -
C++学习笔记(五):指针
指针可以用于保存一个地址。指针的定义语法:数据类型 * 指针变量名 = &变量名指针的使用指针前加 * 代表解引用,找到指针指向的内存中的数据指针所占内存在32位系统下,无论是什么数据类型,指针所占内存都是4个字节64位系统下,指针所占内存都是8个字节空指针int *p = NULL;//指针变量指向内存中编号为0的空间空指针不能被访问,因为编号为0的空间被系统占用,用户不能访问。野指针指针变量指向非法的内存空间const修饰指针常量指针语法:const 数据类型原创 2021-01-03 13:33:56 · 173 阅读 · 0 评论 -
C++学习笔记(四):函数
函数定义的语法返回值类型 函数名 (参数列表){//函数定义的参数为形参 函数体语句 return表达式}函数调用的语法函数名(参数)//函数调用的参数为实参调用函数时,将实参的值传给形参。形参的改变不会影响实参。函数的声明函数在定义之前先告诉编译器函数的存在。语法:返回值类型 函数名(参数列表);函数的声明可以多次,函数的定义只能由一次。函数的分文件编写在头文件(.h文件)写函数的声明,在源(.cpp)文件写函数的定义。...原创 2020-12-29 17:48:59 · 93 阅读 · 0 评论 -
C++学习笔记(三):运算符
算数运算符运算符号功能+做单目运算符表示正数,做双目运算符表示加法-做单目运算符表示负数,做双目运算符表示减法*乘法/除法%取模运算(小数不允许做取模运算)++i++表示先进行表达式运算再将i的值增加1,++i表示先将i的值增加1再进行表达式运算- -i- -表示先进行表达式运算再将i的值减少1,- -i表示先将i的值减少1再进行表达式运算赋值运算符运算符号功能=将右值赋给左值+=将左值加上右值再赋原创 2020-12-29 11:29:49 · 169 阅读 · 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 · 101 阅读 · 0 评论 -
C++学习笔记(一):变量、常量和命名规则
C++学习笔记(一):变量、常量和命名规则变量变量的意义:方便管理内存空间变量语法:数据类型 变量名 = 变量初始值;常量常量的意义:用于记录程序中不可更改的数据常量的语法:宏常量:#define 常量名 常量值const 数据类型 常量名 = 常量值;const 和define 定义常量的区别:define 在编译的预处理阶段起作用,const在编译运行的时候起作用。define无脑进行替换,不进行类型检查,const进行类型检查。define占用代码段的空间原创 2020-12-28 15:26:44 · 1159 阅读 · 0 评论
分享