C++
C++相关知识
Water_Coder
正在学算法
展开
-
C语言 顺序程序设计和选择结果程序设计
一、常量与变量1、常量在程序运行过程中,其值不能被改变的量称为常量。//比如:int a=1024;char b='q';double c=3.1415926;常量类型含义整型常量比如1024,-45,678,0这些都是整型常量实型常量包括十进制小数,比如3.1515926,1.56,0.0等;还有指数形式,比如1.024e5(表示1.024×10³)等字符常量包括普通字符,比如‘#’,’%’,‘a’,‘1’等单个字符;还有转义字符,比如’\n’,’\t原创 2020-10-24 21:32:32 · 743 阅读 · 0 评论 -
C++之类型转换
类型转换一、类型的自动转换和强制转换在C++中,存在隐式类型转语法(自动类型转换)int a = 12;a = 22.5 + a;C++还提供了显式类型转换语法(强制类型转换)类型名(变量)int num = int(99.5);C语言采用的语法格式int num = (int)99.5;注意:1、不管是自定类型转换还是强制类型转换,前提是编译器必须知道如何转换,如:①将浮点型数据赋值给整型变量时,舍弃小数部分。②将整型数据赋值给浮点型变量时,数值不变,但是以指数形式储存。③将原创 2020-06-30 10:58:02 · 817 阅读 · 0 评论 -
C++ 之构造函数(拷贝/复制构造函数)
拷贝构造函数(复制构造函数)一、拷贝构造函数概念拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:通过使用另一个同类型的对象来初始化新创建的对象。复制对象把它作为参数传递给函数。复制对象,并从函数返回这个对象。二、引例1、第一个问题需求说明:自定义Sting(字符串)类,以简化字符串的操作//MyString.hclass String{public: String(char * str = ""); fr原创 2020-06-26 12:52:51 · 3153 阅读 · 0 评论 -
C++ 之友元函数
友元函数概念:类里面可以定义public、protected、private三种属性的成员,通过对象可以访问public成员,只有本类中的函数可以访问本类的private成员。在C++里有一种特殊机制——友元(friend)。借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的private(私有)成员。friend 的意思是朋友,与朋友的关系显然要比一般人亲密一些。在C++中,这种友好关系可以用 friend 关键字指明,中文多译为“友元”,借助友元可以访问与其有好原创 2020-06-25 17:08:42 · 2242 阅读 · 0 评论 -
C++ 之const详解
const详解一、const修饰成员变量1.只有一个cosnt时,如果const位于*的左侧:表示指针所指的数据常量,不能通过该指针修改实际数据;指针本身是变量,可以指向其他内存单元。2.只有一个const时,如果const位于*右侧:表示指针本身时常量,不能指向其他内存单元;所指向的数据可以修改3.如果有两个const位于*的左右两侧,表示指针和指针所指向的数据都不能修改//1.const修饰成员变量void ConstDemo1(){ int num1 = 1024; co原创 2020-06-25 11:47:01 · 390 阅读 · 0 评论 -
C++ 之运算符重载
C++中的运算符重载一、运算符重载(Operator Overloading)运算符重载就是“想法转换”,它的目标是简化函数调用的方式1、把标准的函数使用方式,重新定义为自己认为的方式2、所谓重载,就是赋予新的含义3、运算符重载也是一个道理,同一个运算符可以有不同的功能实际上,我们已经在不知不觉中使用了运算符重载1、+号可以对不同类型(int 、 float等)的数据进行加法操作2、<<既是位移运算符,又可以配合cout向控制台输出数据3、C++本身已经对这些运算符进行了重载原创 2020-06-25 11:33:33 · 1451 阅读 · 0 评论 -
C++ 之this指针详解
this指针一、this关键字this指针每个成员函数(包括构造和析构)都有一个this指针。this指针指向调用对象,即可以通过this关键字访问对象成员。//访问成员变量this->成员名;//访问成员函数this->函数名();注意:1.this指针的类型为类类型*const(类名 *const ),为右值。2.this指针本身不占用大小,它并不是对象的一部分,因此不会影响sizeof的结果。3.this的作用域在类成员函数的内部。4.this指针是类成员函数原创 2020-06-01 18:12:04 · 2963 阅读 · 0 评论 -
C++ 之使用类创建对象
C++实用类创建对象一、第一种实例化方式栈内存中创建:类似声明变量自定义类型名 对象名[(参数列表)];Student stu;Student stu;注意:1.stu对象由系统创建并释放,不用担心会出现内存泄漏。2.生命周期只在声明区域的大括号内。3.栈内存的优势是存取速度比较快(仅次于寄存器),缺点是存在栈中的数据大小与生存期必须是确定的,缺乏灵动性。二、第二种实例化方式在堆内存中创建:需要new关键字Student* p_stu1 = new Student();St原创 2020-06-01 17:09:16 · 1416 阅读 · 1 评论 -
C++ 之栈内存与堆内存详解
C++中的栈内存与堆内存一、栈内存和堆内存的定义栈内存:由程序自动向操作系统申请分配以及回收,速度快,使用方便,但程序员无法控制。若分配失败,则提示栈溢出错误。注意,const局部变量也储存在栈区内,栈区向地址减小的方向增长。堆内存:程序员向操作系统申请一块内存,当系统收到程序的申请时,会遍历一个记录空闲内存地址的链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。分配的速度较慢,地址不连续,容易碎片化。此外,由程序员申请,同时也必须由程序员负原创 2020-06-01 15:56:19 · 4036 阅读 · 0 评论 -
C++ 之析构函数
C++中的析构函数析构函数对象过期时自动调用特殊成员函数。析构函数一般用来完成清理工作。析构函数的名称是在类名前加上~。析构函数没有参数,只能有一个。例如:class Studet{private: double * scores;public: Student(int len) { //使用new分配资源 scores = new double[len]; } ~Student() { delete scores;//释放资源 }}注意:1.析构函数用来原创 2020-06-01 12:17:44 · 418 阅读 · 0 评论 -
C++之类的成员函数和构造函数
C++中的类的成员函数和构造函数一、类的成员函数函数声明class 类名{修饰符1: 变量1类型 变量1名称; 变量2类型 变量2名称; ... 变量N类型 变量N名称;修饰符2: 函数1返回类型 函数1名称(); ... ... ... 函数N返回类型 函数N名称();}//例如:class People{public: string name; long secore;public: void PlayGameSecore();}函数定义返回类型 类原创 2020-06-01 11:52:53 · 3383 阅读 · 0 评论 -
C++ 之访问修饰符
C++中的访问修饰符一、常见的访问修饰符public(共有成员):修饰成员在任意地方都可以访问。公有成员在程序中类的外部是可访问的。你可以不使用任何成员函数来设置和获取公有变量的值。private(私有成员):修饰的成员只能够在类中或者友元函数中可以访问。私有成员变量或函数在类的外部是不可访问的,甚至是不可查看的。只有类和友元函数可以访问私有成员。默认情况下,类的所有成员都是私有的。protected(保护成员):修饰的成员可以在类中的函数、子类函数及友元函数中访问。保护成员变量或函数与私有成原创 2020-06-01 10:35:19 · 1132 阅读 · 0 评论 -
C++ 之抽象和类
C++中的抽象和类一、抽象和类抽象:从具体事物抽取共同的本质特征。C++ 中的类:1.类是一种将抽象转换为用户定义类型的工具。2.将数据表示和操作数据的方法组成一个整体。3.类的实例称为对象。4.类中的变量和函数称为成员。二、类的声明和使用类的声明:使用class/struct关键字声明类型如:class 类名{};class People{};struct 类名{};struct Hero{};注:1.class声明的类型与struct声明的类型仅仅是形式上的不同。原创 2020-06-01 10:08:06 · 382 阅读 · 0 评论 -
C++ 之 文件的输入和输出相关问题
C++为什么要有自己的输入输出系统?1.因为C++的输入输出系统比C语言更安全、更可靠。2.在C++中需要定义众多的用户自定义类型(如结构体、类等),但是使用C语言中的printf和scanf是无法对这些数据进行输入输出操作的。C++有哪4个预定义的流?它们分别与什么具体设备相关联?C++中包含几个预定义的流对象,它们是:标准输入流对象 cin、标准输出流对象 cout、非缓冲型的标准...原创 2020-04-14 17:40:55 · 1304 阅读 · 0 评论 -
函数模板(Function Template)
函数模板(Function Template)所谓函数模板,实际上就是建立一个通用函数1、函数定义时不指定具体的数据类型(使用虚拟类型代替)2、函数被调用时编译器根据实参反推数据类型-类型的参数化//模板头与函数声明/定义永远是不可分割的整体!template<typename 类型参数1,typename 类型参数2,...>//typename老版C++用class返回...原创 2020-02-06 18:15:12 · 545 阅读 · 0 评论 -
C++ 之函数模板详解
模板实参和模板函数一、模板实参什么是模板实参?以下面这个函数为例(交换x和y)://交换x和y函数template <class T>void Swap(T & x, T & y){ T tmp = x; x = y; y = tmp;}定义时T 是类型参数,代表类型。编译器由模板自动生成函数时,会用具体的类型名对模板中所有的...原创 2020-04-06 20:39:39 · 1411 阅读 · 0 评论 -
C++ 之string
C++ string类详解一、string 类简介C++ 中提供了专门的头文件== string==(注意不是 string.h,这个是 C 风格字符串相关函数的头文件),来支持 string 类型。string 类定义隐藏了字符串的数组性质,让我们可以像处理普通变量那样处理字符串。string 对象和字符数组之间的主要区别是:可以将 string 对象声明为简单变量,而不是数组。 1.1 ...原创 2020-04-03 12:05:35 · 2046 阅读 · 0 评论 -
C++ 之友元运算符函数与成员运算符函数的不同
友元运算符函数和成员运算符函数有什么不同?1、运算符函数可以定义为它将要操作的成员,称为成员运算函数。定义为类的友元函数,称为友元运算函数。2、双目运算符成员运算符函数带一个参数,第一个操作数被隐含,友元运算符函数带两个参数。单目运算符而言成员运算符函数不带参数,操作数被隐含,友元运算符带一个参数。3、双目运算符一般情况,可被重载为友元运算符函数或成员运算符函数。但在一种情况下,当双目运算符...原创 2020-04-04 10:00:15 · 2405 阅读 · 0 评论 -
C++ 之运算符重载规则
运算符重载的规则1、C++中大部分运算符允许重载,不能重载的运算符只有少数几个。2、C++语言中只能对已有的运算符进行重载,不允许用户自己定义新的运算符。3、运算符重载是针对新类型数据的实践需要,对原有的运算符进行适当的改造。重载的功能应当与原有的功能相类似,不能违反操作符的语法规则,比如用“+”计算两个对象的差。4、重载不能改变运算符的操作对象(操作数)的个数。5、重载不能改变运算符原...原创 2020-04-04 10:00:35 · 1701 阅读 · 0 评论