自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 输入/输出流

一.流的概念1.输入/输出是一种基本的数据传递操作,它可以理解为字符序列在计算机内存与外设之间的流动。2.数据从一个对象到另一个对象的流动抽象为流,实现设备之间交换信息的类称为流类。3.按面向对象方法组织的多个流类及其类层次集合构成了I/O流类库,简称为流库。 流库中的每一个流类都定义了一种设备之间的信息交换方式,按信息流动方向的不同,可以分为输入/输出流。与输入设备(如键盘)相联系的流称为输入流。与输出设备(如屏幕)相联系的流称为输出流。与输入输出设备相联系的流称为输入输出流。二.流的种

2020-06-19 14:51:53 1764

原创 虚函数与多态性

一.静态联编1.联编是指一个程序自身彼此关联的过程,在这个联编过程中,需要确定程序中的操作调用(函数调用)与执行该操作(函数)的代码段之间的映射关系; 就是把函数调用与函 数的程序代码连接(联系)在一起的过程。2.联编分为两大类1)静态联编调用速度快,效率高,但缺乏灵活性。C++为了兼容C语言仍然是编译型的,采用静态联编。2)动态联编运行效率低,但增强了程序灵活性。为了实现多态性,利用虚函数机制,可部分地采用动态联编。二.类指针的关系基类指针和派生类指针与基类对象和派生类对象4种可能匹配

2020-06-18 22:25:08 436

原创 虚基类

一.基本概念1.要使这个公共基类在派生类中只产生一个子对象,必须对这个基类声明为虚继承,使这个基类成为虚基类。2. 虚基类用于有共同基类的场合3. 声明虚基类的一般形式为:class 派生类名: virtual 继承方式 基类名例:class B1:virtual public B5. 注意:虚基类并不是在声明基类时声明的,而是在声明派生类时,指定继承方式时声明的。因为一个基类可以在派生一个派生类时作为虚基类,而在派生另一个派生类时不作为虚基类。在第一级继承时就要将共同基类设计为虚

2020-06-18 19:23:37 2707

原创 多继承

一.基本概念1.多继承是指派生类具有两个或两个以上的直接基类。2.多重继承可以看做是单继承的扩展,派生类和每个基类之间的关系可以看做是一个单继承。3.多继承声明语法class 派生类名: 访问控制 基类名1, 访问控制 基类名2, …, 访问控制 基类名n{数据成员和成员函数声明};其中不同的基类可以选择不同的继承方式。二.多继承的派生类构造和访问1.多个基类的派生类构造函数可以用初始化列表调用基类构造函数初始化数据成员。派生类名(参数总表):基类名1(参数表1),基类名2(参数表2

2020-06-15 12:24:11 1049

原创 重命名成员

一.概念可以在派生类中声明一个与基类成员同名的成员。派生类的新成员会屏蔽(hide)与其同名的基类成员,使同名的基类成员成为“不可见”的,即基类成员的名字被隐藏。若要在派生类中使用基类的同名成员,显式地使用类名限定符:类名 :: 成员二.重命名数据成员class base{ public :int a , b ; } ;class derived : public base{ public :int b , c ; } ;void f ( ) { derived d ; d . a

2020-06-15 11:51:03 149

原创 公有继承,私有继承,保护继承

一.公有继承1.在声明一个派生类时将基类的继承方式指定为public,称为公有继承。2.用公有继承方式建立的派生类称为公有派生类,其基类称为公有基类例,公有继承的测试#include<iostream>using namespace std ;class A{public : void get_XY( ) { cout << "Enter two numbers of x, y : " ; cin >> x

2020-06-15 11:24:09 1801

原创 继承与派生的基本知识

一.继承与派生的概念1.继承是在一个或多个已存在的类的基础上建立一个新的类。1)已存在的类称为“基类”、“父类”或“一般类”。2)新建立的类称为“派生类”、“子类”或“特殊类”。2.从新类角度说,新类从已有的类那里获得其已有特性,这种现象称为类的继承。通过继承,一个新建子类从已有的父类那里获得父类的特性。从父类角度说,从已有的父类产生一个新的子类,称为类的派生。二.基类和派生类1.派生类继承了基类的所有数据成员和成员函数(不包括基类的构造函数和析构函数),并可以增加自己的新成员,同时也可以调整

2020-06-15 10:46:48 2967

原创 类类型转换

一.定义1.数据类型转换是在程序编译或运行时,将数据值的某种类型转换成另外一种类型,有:基本类型 ←→ 基本类型基本类型 ←→ 类类型类类型 ←→ 类类型2.类对象的类型转换可由两种方式说明:•构造函数•类型转换函数二.构造函数进行类类型转换使用转换构造函数将一个指定的数据转换为类对象的方法如下:1.先声明一个类2.在这个类中定义一个只有一个参数的构造函数,参数的类型是需要转换的类型,在函数体中指定转换的方法3.在该类的作用域内可以用以下形式进行类型转换:类名(指定类型的数据)#i

2020-06-14 23:09:26 2018

原创 典型运算符重载

一.重载++ 与- -例 成员函数重载++#include<iostream>using namespace std;class Increase{public : Increase ( ) { value=0; } void display( ) const { cout<<value<<'\n'; } ; Increase operator ++ ( ) ;

2020-06-14 18:32:36 94

原创 用成员或友元函数重载运算符

一.运算符重载的两种形式运算符重载为类的成员函数或类的友元函数1.区别:成员函数具有this 指针,友元函数没有this指针2.联系:不管是成员函数还是友元函数重载,运算符的:使用方法相同。传递参数的方式不同,实现代码不同,应用场合也不同 。二. 用成员函数重载运算符1.当一元运算符的操作数,或者二元运算符的左操作数是类的对象时,定义重载算符函数为成员函数。2. 二元运算符op如果要重载op 为类的成员函数,使之能够实现表达式oprd1 op oprd2,其中oprd1 为A 类对象,

2020-06-14 17:33:25 7533

原创 运算符重载的基本知识

一.运算符重载的实质1.运算符重载:对已有的运算符赋予多重含义,实质是函数重载,它提供了C++的可扩展性。2.实现机制转化:运算表达式转化为对运算符函数的调用运算对象转化为运算符函数的实参二.运算符能否重载1.可以重载的运算符算术运算符:+,-,,/,%,++,–;位操作运算符:&,|,~,^(位异或),<<(左移),>>(右移);逻辑运算符:!,&&,||;比较运算符:<,>,>=,<=,==,!=;赋值运算符:=,+=,-=,=,/

2020-05-12 23:59:51 1286

原创 友元

一.定义1.友元是一种定义在类外部的普通函数,但它需要在类体内进行说明,为了和该类的成员函数加以区别,在说明时前面加以关键字friend。2.友元不是成员函数,但是他能够访问类中的私有成员。友元的作用在于提高运行效率,但 是,他破坏了类的封装性和隐藏性,使得非成员函数能够访问类的私有成员。3.友元可以是函数,称为友元函数;友元也可以是类,称为友元类。4.友元关系不是对称关系。即 Y 是...

2020-05-07 22:38:33 650

原创 静态成员

一.定义1.声明为static的类数据成员称做静态数据成员声明为static的类成员函数称做静态成员函数能在类的范围内共享数据。2.静态成员不属于某一个单独的对象,而是为类的所有对象所共有• 根据静态存储的特点,当对象不存在时,仍可以访问该静态成员。• 静态成员函数的作用不是为了对象之间的沟通,而是为了能处理静态数据成员: 保证在不依赖于某个对象的情况下,访问静态数据成员。二.静态数...

2020-05-07 21:58:45 225

原创 常成员

一.常数据成员1.定义在类中定义的不能修改其值的一些数据成员,类似于常变量,虽然是变量,也有自己的地址,但是一经赋初值,便不能再被修改。2.常数据成员表示它在某个对象生存期内是常量, 即在对象生成时给出常量值,在对象生存期内其值不可改变。而对于整个类而言,不同的对象其常数据成员的值可以不同。3.定义方法:const 类型名 变量名;注意:类中的常数据成员只能通过构造函数的参数初始化表进行...

2020-05-07 21:36:49 176

原创 this指针

一.对象的存储每个对象中的数据成员都分别占有存储空间,如果对同一个类定义了n个对象,则有n组同样大小的空间以存放n个对象中的数据成员。但是,不同对象都调用同一个函数代码段。#include <iostream>using namespace std;class Box{ private:int height; int width; int length;public...

2020-03-30 12:03:25 526

原创 对象指针

一.定义用于存放对象空间起始地址的变量二.声明对象指针的一般形式*类名 对象指针名;例如:Box *p;**Box a(10,12, 20);p = &a;三.通过对象指针访问成员的方法*对象指针名->成员名或 (对象指针名).成员名四. 指向对象数据成员的指针变量定义*数据类型名 指针变量名;class Time{ public:int hour;...

2020-03-30 11:42:11 97 1

原创 对象数组

一.定义数组中的每一个元素都是类的对象二.声明一个一维对象数组的一般形式类名 数组名[常量表达式];三.引用对象数组元素的公有成员数组名[下标].成员名;四.对象数组的初始化调用构造函数对每个元素初始化如: Box a[3]={Box(10,12,15),Box(15,16,17),Box(16,20,26)};五.例题#include <iostream>...

2020-03-30 11:10:36 128

原创 对象数组与对象指针

一.对象数组1.对象数组:数组中的每一个元素都是类的对象。2.声明一个一维对象数组的一般形式:类名 数组名[常量表达式];3.引用对象数组元素的公有成员:数组名[下标].成员名;对象数组的初始化4.调用构造函数对每个元素初始化如: Box a[3]={Box(10,12,15),Box(15,16,17),Box(16,20,26)};二.对象数组的应用#include ...

2020-03-26 17:44:08 300

原创 析构函数

一.作用用于完成对象被删除前的一些清理工作。至于完成怎样的清理工作,由设计者在函数体中实现。二.调用时间在对象的生存期结束的时刻,即在删除一个对象前由系统自动调用,然后再释放此对象所属的空间。三.默认的析构函数如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数规定:1.是类的公有函数成员,名称由类名前加” ~”构成2.没有参数,没有返回值3.一个类中只能定义一个析构...

2020-03-26 17:01:35 388

原创 浅复制与深复制

一.关于浅复制1.浅复制被复制对象的所有变量都含有与原来的对象相同的值,而其所有的对其他对象的引用都仍然指向原来的对象。说明:一个对象中的数据成员:有的是值类型的数据,它的值就是简单的值有的是引用类型的数据,它的值是地址,例如:指针类型的成员函数。浅复制在复制时,将这个对象的值数据和引用数据(均为非静态数据)全部复制过去,获得了这个对象的值和地址。即:当其中一个对象的引用字段所指...

2020-03-22 23:23:02 102

原创 复制构造函数

一.生成一个对象的副本有2种途径途径1:建立一个新对象,将一个已有对象数据成员的值取出来赋给新对象。途径2:使用复制构造函数。复制构造函数是一种特殊的构造函数,用来生成一个对象的副本。二.复制构造函数的作用使用一个已经存在的对象初始化一个同类的新对象三.复制构造函数的特点1.复制构造函数名与类名相同,并且也没有返回值类型。2. 复制构造函数可写在类中,也可以写在类外。3. 复制...

2020-03-22 23:01:39 748

原创 构造函数

一.定义1.构造函数的作用是在对象被创建时使用特定的值构造对象,即把对象初始化为一个特定的状态。2. 构造函数是一种特殊的成员函数,它不需用户调用,而是在对象创建时由系统自动调用。3. 如果程序中未声明,则系统自动产生一个默认形式的构造函数,用于创建对象,默认构造函数形式:类名::类名(){}默认构造函数是一个空函数。4.构造函数一般被定义为公有成员二.特殊性质函数名与类名相同...

2020-03-22 22:48:29 633

转载 sort函数详解

**1.sort**使用:#includeusing namespace std;作用:排序时间复杂度:n*lg(n)实现原理:sort并不是简单的快速排序,它对普通的快速排序进行了优化,此外,它还结合了插入排序和推排序。系统会根据你的数据形式和数据量自动选择合适的排序方法,这并不是说它每次排序只选择一种方法,它是在一次完整排序中不同的情况选用不同方法,比如给一个数据量较大的数组排序...

2020-03-05 23:12:56 500

原创 类的相关例题

钟表类1.一个对象#include using namespace std;class Time{public:int hour;int minute;int second;};int main(){Time t1;cin>>t1.hour;cin>>t1.minute;cin>>t1.second;cout<<t...

2020-03-05 22:24:15 334

原创 类与对象

面向过程的设计方法形式:主模块+若干个子模块(main()+子函数)。特点:自顶向下,逐步求精——功能分解。缺点:效率低,程序的可重用性差。什么是面向对象面向对象的程序设计的基本思路:使用现实世界的概念抽象地思考问题从而自然地解决问题。现实世界是有各种实体组成。如一个学校,有学生、教师、各种教学辅助设施等等不同的实体组成。实体之间通过消息传递(教师学生布置作业即是发送了消息,...

2020-03-05 22:04:50 76

原创 结构体

一.结构体的认识1.结构体是由不同数据类型的数据组成的集合体。2.结构可以由结构类型不同的成员构成。3.一个结构变量在内存中占有一片连续的存储空间。二.定义结构体struct 标识符{ 类型 成员1;类型 成员2;…类型 成员n;};注:其中有成员类型相同时尽量写,这样可以看清每个成员可以用不同的方法定义一个结构变量:1.声明类型之后声明变量2.声明类型同时声明类型注...

2020-03-02 22:51:00 190

原创 结构数组

一.定义数组的元素类型为结构类型时,称为结构数组。例.struct employee{int a;double x;};employee c[10];c[10]是一个有10个元素的数组,其中元素类型是employee类型。数组中的每一个元素包含两个数据成员。c[0].a c[0].xc[1].a c[1].x…c[9].a ...

2020-02-29 00:38:56 635

空空如也

空空如也

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

TA关注的人

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