书签 分享 收藏 举报 版权申诉 / 224
上传文档赚钱

类型类是用户定义类型也称为类类型每个类包含数据说明和一课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3398400
  • 上传时间:2022-08-27
  • 格式:PPT
  • 页数:224
  • 大小:2.46MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《类是用户定义类型也称为类类型每个类包含数据说明和一课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    用户 定义 类型 称为 每个 包含 数据 说明 课件
    资源描述:

    1、2.1 类的定义和对象的创建2.2 构造函数与析构函数2.3 this,const和new,delete2.4 复制构造函数2.5 转换构造函数与类型转换2.6 对象数组、对象指针与对象引用2.7 静态成员与友元2.8 从面向过程到面向对象 面向对象编程的程序基本单位是类 类是数据和操作数据的函数的封装 类的对象使用自己的方法完成对数据的操作 类可以隐藏数据和操作细节,对象通过类接口与外部通信/排序函数原型void Sort(int ,int);/数组相加函数原型void Add(int,int,int);void main()int a 10,b 10;.Sort(a,10);Sort(b,

    2、10);Add(a,b,10);.数组与数组类class Array/定义数组类 int*ap;int len;public:Array(int size)/建立数组 len=size;ap=new int size ;void Sort();/排序 /重载算符+函数 Array operaor+(const Array&other);void main()Array a(10),b(10);/声明对象 .a.Sort();b.Sort();/调用排序方法 a=a+b;/数组相加 ./排序函数原型void Sort(int ,int);/数组相加函数原型void Add(int,int,int

    3、);void main()int a 10,b 10;.Sort(a,10);Sort(b,10);Add(a,b,10);.数组与数组类2.2 2.2 类与对象类与对象class Array/定义数组类 int*ap;int len;public:Array(int size)/建立数组 len=size;ap=new int size ;void Sort();/排序 /重载算符+函数 Array operaor+(const Array&other);void main()Array a(10),b(10);/声明对象 .a.Sort();b.Sort();/调用排序方法 a=a+b;/

    4、数组相加 ./排序函数原型void Sort(int ,int);/数组相加函数原型void Add(int,int,int);void main()int a 10,b 10;.Sort(a,10);Sort(b,10);Add(a,b,10);.数组与数组类class Array/定义数组类 int*ap;int len;public:Array(int size)/建立数组 len=size;ap=new int size ;void Sort();/排序 /重载算符+函数 Array operaor+(const Array&other);类是数据和操作数据的函数的封装2.2 2.2

    5、类与对象类与对象class Array/定义数组类 int*ap;int len;public:Array(int size)/建立数组 len=size;ap=new int size ;void Sort();/排序 /重载算符+函数 Array operaor+(const Array&other);void main()Array a(10),b(10);/声明对象 .a.Sort();b.Sort();/调用排序方法 a=a+b;/数组相加 ./排序函数原型void Sort(int ,int);/数组相加函数原型void Add(int,int,int);void main()in

    6、t a 10,b 10;.Sort(a,10);Sort(b,10);Add(a,b,10);.数组与数组类对象使用自己的方法对数据操作a.Sort();b.Sort();/调用排序方法a=a+b;/数组相加2.2 2.2 类与对象类与对象2.2 2.2 类与对象类与对象class 钟 private:钟的构造;public:读取时间值;调整时间值;对象通过类接口与外部通信2.2 2.2 类与对象类与对象2.1 2.1 定义类和对象定义类和对象v在在C+中,类是一种数据类型。中,类是一种数据类型。v 客观事物是复杂的,要描述它必须从多客观事物是复杂的,要描述它必须从多方面进行,也就是方面进行,

    7、也就是用不同的数据类型用不同的数据类型来描来描述述不同的方面不同的方面。v如每天可以这样描述:如每天可以这样描述:v 年份(用整型数描述)年份(用整型数描述)月份(用整型数描述)月份(用整型数描述)日期(用整型数描述)日期(用整型数描述)2.1 2.1 定义类和对象定义类和对象v结构体描述:结构体描述:vStructure Tdayvv int year;v int month;v int day;v vmybirthday类描述:class goods private:int year;int month;int day;.2.1 定义类和对象/例 一个类的例子#includeclass T

    8、date public:void Set(int m,int d,int y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .month .day endl;private:int month;int day;int year;void main()Tdate a ;a.Set(10,16,2003);a.Print();2.1 定义类和对象/例 一个类的例子#includeclass Tdate public:void Set(int m

    9、,int d,int y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .month .day endl;private:int month;int day;int year;void main()Tdate a ;a.Set(10,16,2003);a.Print();class Tdate public:void Set(int m,int d,int y)month=m;day=d;year=y;int IsLeapYear()ret

    10、urn(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .month .day endl;private:int month;int day;int year;2.1 定义类和对象/例 一个类的例子#includeclass Tdate public:void Set(int m,int d,int y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .month .day e

    11、ndl;private:int month;int day;int year;void main()Tdate a ;a.Set(10,16,2003);a.Print();class Tdate public:void Set(int m,int d,int y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .month .day endl;private:int month;int day;int year;关键字定义一个类标识符类名2

    12、.1 定义类和对象/例例 一个类的例子一个类的例子#includeclass Tdate public:void Set(int m,int d,int y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .month .day endl;private:int month;int day;int year;void main()Tdate ;a.Set(10,16,2003);a.Print();Tdate 类型的一个对象(实例)2.1 定

    13、义类和对象/例 一个类的例子#includeclass Tdate public:void Set(int m,int d,int y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .month .day endl;private:int month;int day;int year;void main()Tdate a ;a.Set(10,16,2003);a.Print();类由成员构成:数据成员描述对象的属性 成员函数描述对象的方法2

    14、.1 定义类和对象/例 一个类的例子#includeclass Tdate public:void Set(int m,int d,int y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .month .day endl;private:int month;int day;int year;void main()Tdate a ;a.Set(10,16,2003);a.Print();int month;int day;int year;

    15、数据成员2.1 定义类和对象/例 一个类的例子#includeclass Tdate public:void Set(int m,int d,int y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .month .day endl;private:int month;int day;int year;void main()Tdate a ;a.Set(10,16,2003);a.Print();void Set(int m,int d,i

    16、nt y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .month .day endl;类中定义成员函数内联函数处理2.1 定义类和对象/例 一个类的例子#includeclass Tdate public:void Set(int m,int d,int y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print(

    17、)cout year .month .day endl;private:int month;int day;int year;void main()Tdate a ;a.Set(10,16,2003);a.Print();void Set(int m,int d,int y);int IsLeapYear();void Print();在类外定义成员函数 void Tdate:Set(int m,int d,int y)month=m;day=d;year=y;int Tdate:IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);voi

    18、d Tdate:Print()cout year.month.dayendl;2.1 定义类和对象/例 一个类的例子#includeclass Tdate public:void Set(int m,int d,int y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .month .day endl;private:int month;int day;int year;void main()Tdate a ;a.Set(10,16,200

    19、3);a.Print();成员的性质由关键字public、protected、private 决定公有 公有段的成员是提供给外部的接口 保护 保护段成员在该类和它的派生类中可见 私有 私有段成员仅在类中可见各段中既可以包含数据成员,也可以包含成员函数2.1 定义类和对象/例 一个类的例子#includeclass Tdate public:void Set(int m,int d,int y)month=m;day=d;year=y;int IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Print()cout year .

    20、month .day ”运算符访问对象成员 访问对象成员/访问对象的公有成员#includeclass Tclass public:int x,y;void print()cout x “,”运算符访问对象成员 访问对象成员/访问对象的公有成员#includeclass Tclass:int x,y;void print()cout x “,”运算符访问对象成员 访问对象成员/访问对象的公有成员#includeclass Tclass:int x,y;void print()cout x “,”运算符访问对象成员 访问对象成员/用指针访问对象成员#includeclass Tclass pub

    21、lic:int x,y;void print()cout x ,y x+ptf-y);void main()Tclass test,*pt=new(Tclass);pt-x=100;pt-y=200;pt-print();test.x=120;test.y=420;test.print();cout x+y=”运算符访问对象成员 访问对象成员/用指针访问对象成员#includeclass Tclass public:int x,y;void print()cout x ,y x+ptf-y);void main()Tclass test,*pt=;pt-x=100;pt-y=200;pt-pr

    22、int();test.x=120;test.y=420;test.print();cout x+y=”运算符访问对象成员 访问对象成员/用指针访问对象成员#includeclass Tclass public:int x,y;void print()cout x ,y x+ptf-y);void main()Tclass test,*pt=new(Tclass);=100;=200;test.x=120;test.y=420;test.print();cout x+y=”运算符访问对象成员 访问对象成员/用指针访问对象成员#includeclass Tclass public:int x,y;

    23、void print()cout x ,y x+ptf-y);void main()Tclass test,*pt=new(Tclass);pt-x=100;pt-y=200;pt-print();test.x=120;test.y=420;test.print();cout x+y=”运算符访问对象成员 访问对象成员/用指针访问对象成员#includeclass Tclass public:int x,y;void print()cout x ,y x+ptf-y);void main()Tclass test,*pt=new(Tclass);pt-x=100;pt-y=200;pt-pri

    24、nt();test.x=120;test.y=420;test.print();cout x+y=add();向函数传递对象地址 C+为对象的初始化提供了必要的机制,让用户可以自己编写初始化程序,这就是构造函数。构造函数是用于创建对象的特殊成员函数当创建对象时,系统自动调用构造函数 构造函数的作用是:为对象分配空间;对数据成员赋初值;请求其他资源 没有用户定义的构造函数时,系统提供缺省版本的构造函数 构造函数名与类名相同 构造函数一般被声明为公有函数,可以重载。构造函数可以有任意类型的参数,但没有返回类型,也不能标记为void类型。2.2 构造函数和析构函数 析构函数是用于取消对象的成员函数

    25、当一个对象作用域结束时,系统自动调用析构函数来释放存储空间。析构函数名为:类名 没有用户定义析构函数时,系统提供缺省版本的析构函数 析构函数的作用是进行清除对象,释放内存等操作 析构函数没有参数,也没有返回类型2.3 构造函数和析构函数例:class AA AA()AA();void test()int x,y;AA t1,t2;return;2.3 构造函数和析构函数例:class AA AA()AA();void test()int x,y;AA t1,t2;return;构造函数2.3 构造函数和析构函数例:class AA AA()AA();void test()int x,y;AA

    26、t1,t2;return;析构函数2.3 构造函数和析构函数例:class AA AA()AA();void test()int x,y;AA t1,t2;return;/声明变量时开辟两个整型存储空间2.3 构造函数和析构函数例:class AA AA()AA();void test()int x,y;AA t1,t2;return;/两次调用构造函数,创建对象2.3 构造函数和析构函数例:class AA AA()AA();void test()int x,y;AA t1,t2;return;/两次调用构造函数,创建对象2.3 构造函数和析构函数例:class AA AA()AA();vo

    27、id test()int x,y;AA t1,t2;return;/两次调用析构函数,撤消对象2.3 构造函数和析构函数例:class AA AA()AA();void test()int x,y;AA t1,t2;return;/两次调用析构函数,撤消对象2.3 构造函数和析构函数例:class AA AA()AA();void test()int x,y;AA t1,t2;return;/两次调用析构函数,撤消对象/变量 x,y 生存期结束2.3 构造函数和析构函数简单构造函数和析构函数 构造函数原型类名:类名(参数表);析构函数原型 类名:类名();2.3.1 简单构造函数和析构函数#i

    28、nclude/例2-11class Date public:Date();Date();void SetDate(int y,int m,int d);int IsLeapYear();void PrintDate();private:int year,month,day;Date:Date()cout Date object initialized.n;/无参构造函数Date:Date()cout Date object destroyed.n;/析构函数void Date:SetDate(int y,int m,int d)year=y;month=m;day=d;int Date:IsL

    29、eapYear()return(year%4=0&year%100!=0)|(year%400=0);void Date:PrintDate()cout year /month /day endl;void main()Date d;d.SetDate(2001,10,1);d.PrintDate();2.3.1 简单构造函数和析构函数#include/例2-6class Date public:Date();Date();void SetDate(int y,int m,int d);int IsLeapYear();void PrintDate();private:int year,mon

    30、th,day;Date:Date()cout Date object initialized.n;/无参构造函数Date:Date()cout Date object destroyed.n;/析构函数void Date:SetDate(int y,int m,int d)year=y;month=m;day=d;int Date:IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Date:PrintDate()cout year /month /day endl;void main()Date d;d.SetDate(200

    31、1,10,1);d.PrintDate();Date();Date:Date()cout Date object initialized.n;/无参构造函数Date d;创建对象时调用构造函数2.3.1 简单构造函数和析构函数#include/例2-6class Date public:Date();Date();void SetDate(int y,int m,int d);int IsLeapYear();void PrintDate();private:int year,month,day;Date:Date()cout Date object initialized.n;/无参构造函数

    32、Date:Date()cout Date object destroyed.n;/析构函数void Date:SetDate(int y,int m,int d)year=y;month=m;day=d;int Date:IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Date:PrintDate()cout year /month /day endl;void main()Date d;d.SetDate(2001,10,1);d.PrintDate();Date();Date:Date()cout Date object

    33、 destroyed.n;/析构函数作用域结束时调用析构函数2.3.1 简单构造函数和析构函数#include/例2-6class Date public:Date();Date();void SetDate(int y,int m,int d);int IsLeapYear();void PrintDate();private:int year,month,day;Date:Date()cout Date object initialized.n;/无参构造函数Date:Date()cout Date object destroyed.n;/析构函数void Date:SetDate(int

    34、 y,int m,int d)year=y;month=m;day=d;int Date:IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Date:PrintDate()cout year /month /day endl;void main()Date d;d.SetDate(2001,10,1);d.PrintDate();2.3.1 简单构造函数和析构函数#include/例2-6class Date public:Date();Date();void SetDate(int y,int m,int d);int Is

    35、LeapYear();void PrintDate();private:int year,month,day;Date:Date()cout Date object initialized.n;/无参构造函数Date:Date()cout Date object destroyed.n;/析构函数void Date:SetDate(int y,int m,int d)year=y;month=m;day=d;int Date:IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Date:PrintDate()cout year

    36、/month /day SetDate(2001,10,1);pd-PrintDate();delete pd;2.3.1 简单构造函数和析构函数#include/例2-6class Date public:Date();Date();void SetDate(int y,int m,int d);int IsLeapYear();void PrintDate();private:int year,month,day;Date:Date()cout Date object initialized.n;/无参构造函数Date:Date()cout Date object destroyed.n;

    37、/析构函数void Date:SetDate(int y,int m,int d)year=y;month=m;day=d;int Date:IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Date:PrintDate()cout year /month /day SetDate(2001,10,1);pd-PrintDate();delete pd;Date*pd=new(Date);Date();Date:Date()cout Date object initialized.n;/无参构造函数创建动态对象时调用构造函数2

    38、.3.1 简单构造函数和析构函数#include/例2-6class Date public:Date();Date();void SetDate(int y,int m,int d);int IsLeapYear();void PrintDate();private:int year,month,day;Date:Date()cout Date object initialized.n;/无参构造函数Date:Date()cout Date object destroyed.n;/析构函数void Date:SetDate(int y,int m,int d)year=y;month=m;d

    39、ay=d;int Date:IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);void Date:PrintDate()cout year /month /day SetDate(2001,10,1);pd-PrintDate();delete pd;delete pd;Date();Date:Date()cout Date object destroyed.n;/析构函数释放动态对象时调用析构函数2.3.1 简单构造函数和析构函数 带参数的构造函数在建立对象时,以特定的数据初始化 对象的数据成员带参数的构造函数 2.3.2 带参数的构

    40、造函数#include/例2-7class Date public:Date(int,int,int);Date();void SetDate(int y,int m,int d);void IsLeapYear();void PrintDate();private:int year,month,day;Date:Date(int y,int m,int d)year=y;month=m;day=d;cout year /month /day :Date object initialized.n;Date:Date()cout year /month /day :Date object des

    41、troyed.n;void Date:SetDate(int y,int m,int d)year=y;month=m;day=d;void Date:IsLeapYear()if(year%4=0&year%100!=0|year%400=0)cout year Is leap year.n;else cout Is not leap year.n;void Date:PrintDate()cout year /month /day endl;void main()Date d1(2000,2,1);d1.PrintDate();d1.IsLeapYear();2.3.2 带参数的构造函数#

    42、include/例2-7class Date public:Date(int,int,int);Date();void SetDate(int y,int m,int d);void IsLeapYear();void PrintDate();private:int year,month,day;Date:Date(int y,int m,int d)year=y;month=m;day=d;cout year /month /day :Date object initialized.n;Date:Date()cout year /month /day :Date object destroy

    43、ed.n;void Date:SetDate(int y,int m,int d)year=y;month=m;day=d;void Date:IsLeapYear()if(year%4=0&year%100!=0|year%400=0)cout year Is leap year.n;else cout Is not leap year.n;void Date:PrintDate()cout year /month /day endl;void main()Date d1(2000,2,1);d1.PrintDate();d1.IsLeapYear();Date(int,int,int);D

    44、ate:Date(int y,int m,int d)/带参数构造函数 year=y;month=m;day=d;cout year/month/day:Date object initialized.n;2.3.2 带参数的构造函数#include/例2-7class Date public:Date(int,int,int);Date();void SetDate(int y,int m,int d);void IsLeapYear();void PrintDate();private:int year,month,day;Date:Date(int y,int m,int d)year=

    45、y;month=m;day=d;cout year /month /day :Date object initialized.n;Date:Date()cout year /month /day :Date object destroyed.n;void Date:SetDate(int y,int m,int d)year=y;month=m;day=d;void Date:IsLeapYear()if(year%4=0&year%100!=0|year%400=0)cout year Is leap year.n;else cout Is not leap year.n;void Date

    46、:PrintDate()cout year /month /day endl;void main()Date d1(2000,2,1);d1.PrintDate();d1.IsLeapYear();Date(int,int,int);Date:Date(int y,int m,int d)/带参数构造函数带参数构造函数 cout year/month/day:Date object initialized.n;Date:Date(int y,int m,int d)coutyear/month/day:Date object initialized.n;用初始式对数据成员置值2.3.2 带参数

    47、的构造函数Date:Date(int y,int m,int d)coutyear/month/day:Date object initialized.n;使用“初始式”的构造函数形式为:构造函数名(变元表):数据成员1(变元表),数据成员n(变元表)/*/“初始式”可以调用类类型成员或基类构造函数2.3.2 带参数的构造函数/例2-13 对象成员初始化#includeclass A public:A(int x):a(x)int a;class B public:B(int x,int y):aa(x),b(y)void out()cout aa=aa.a endl b=b endl;pri

    48、vate:int b;A aa;void main()B objB(3,2);objB.out();类类型数据成员类的复合类的复合/例2-13 对象成员初始化#includeclass A public:A(int x):a(x)int a;class B public:B(int x,int y):aa(x),b(y)void out()cout aa=aa.a endl b=b endl;private:int b;A aa;void main()B objB(3,2);objB.out();类的复合类的复合/例2-13 对象成员初始化#includeclass A public:A(in

    49、t x):a(x)int a;class B public:B(int x,int y):aa(x),b(y)void out()cout aa=aa.a endl b=b endl;private:int b;A aa;void main()B objB(3,2);objB.out();首先调用成员类构造函数2.3.2 带参数的构造函数类的复合/例2-13 对象成员初始化#includeclass A public:A(int x):a(x)int a;class B public:B(int x,int y):aa(x),b(y)void out()cout aa=aa.a endl b=

    50、b endl;private:int b;A aa;void main()B objB(3,2);objB.out();3objB.aa.a类的复合3objB.aa.a/例2-13 对象成员初始化#includeclass A public:A(int x):a(x)int a;class B public:B(int x,int y):aa(x),b(y)void out()cout aa=aa.a endl b=b endl;private:int b;A aa;void main()B objB(3,2);objB.out();2objB.b再初始化自身数据成员类的复合3objB.aa.

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:类是用户定义类型也称为类类型每个类包含数据说明和一课件.ppt
    链接地址:https://www.163wenku.com/p-3398400.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库