C类对象数组静态成员.doc

C类对象数组静态成员.doc

ID:62033260

大小:18.50 KB

页数:4页

时间:2021-04-15

C类对象数组静态成员.doc_第1页
C类对象数组静态成员.doc_第2页
C类对象数组静态成员.doc_第3页
C类对象数组静态成员.doc_第4页
资源描述:

《C类对象数组静态成员.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编程高手之路-— C++入门—类对象数组和静态成员一、类对象数组ﻫ类的对象和C++其他数据类型一样,也可以为其建立数组,数组的表示方法和结构一样。#includeiostream.hclassDateﻫ{ﻫintmo,da,yr;ﻫpublic:Date(intm=0,intd=0,inty=0){mo=m;da=d;yr=y;}ﻫvoiddisplay()const{ cout〈<MO<<'}ﻫ};ﻫintmain()ﻫ{Date dates[2];ﻫDatetoday(12,31,2003);dates[0]

2、=today;ﻫdates[0].display();ﻫdates[1].display();ﻫreturn 0;ﻫ}1.类对象数组和默认构造函数在前面已经说过,不带参数或者所有参数都有默认值的构造函数叫做默认构造函数.如果类中没有构造函数,编译器会自动提供一个什么都不做的公共默认构造函数.如果类当中至少有一个构造函数,编译器就不会提供默认构造函数.ﻫ如果类当中不含默认构造函数,则无法实例化其对象数组。因为实例花类对象数组的格式不允许用初始化值来匹配某个构造函数的参数表。上面的程序中,main()函数声明了一个长

3、度为2的Date对象数组,还有一个包含初始化值的单个Date对象。接着把这个初始化的Date对象赋值给数组中第一个对象,然后显示两个数组元素中包含的日期。从输出中可以看到,第一个日期是有效日期,而第二个显示的都是0。当声明了某个类的对象数组时,编译器会为每个元素都调用默认构造函数。下面的程序去掉了构造函数的默认参数值,并且增加了一个默认构造函数。#include ﻫclassDateﻫ{intmo,da,yr;public:Date();ﻫDate(intm,intd,inty){mo=m;da=d;yr=y;}

4、void display() const{cout 〈〈MO<<’ }ﻫ};Date::Date(){cout 〈<〈endl;ﻫmo=0;da=0;yr=0;ﻫ}ﻫintmain(){Date dates[2];Datetoday(12,31,2003);dates[0]=today;ﻫdates[0]。display();ﻫdates[1]。display();ﻫreturn0;}ﻫ运行程序,输出为:Date constructor runningﻫDateconstructorrunningﻫ12/31/2

5、0030/0/0ﻫﻫ从输出中可以看出,Date()这个默认构造函数被调用了两次。2.类对象数组和析构函数当类对象离开作用域时,编译器会为每个对象数组元素调用析构函数。ﻫ#includeiostream.hﻫclassDate{int mo,da,yr;public:ﻫDate(intm=0,intd=0,inty=0){mo=m;da=d;yr=y;}ﻫ~Date() {cout<<<endl;}ﻫvoiddisplay()const{cout<〈MO<<’}ﻫ};ﻫintmain(){ﻫDatedates[2]

6、;Datetoday(12,31,2003);ﻫdates[0]=today;ﻫdates[0].display();dates[1]。display();ﻫreturn 0;}ﻫ运行程序,输出为:12/31/2003ﻫ0/0/0Date destructorrunningDatedestructor runningﻫDatedestructorrunning表明析构函数被调用了三次,也就是dates[0],dates[1],today这三个对象离开作用域时调用的。ﻫ二、静态成员可以把类的成员声明为静态的。静态成

7、员只能存在唯一的实例。所有的成员函数都可以访问这个静态成员。即使没有声明类的任何实例,静态成员也已经是存在的。不过类当中声明静态成员时并不能自动定义这个变量,必须在类定义之外来定义该成员。1。静态数据成员ﻫ静态数据成员相当于一个全局变量,类的所有实例都可以使用它.成员函数能访问并且修改这个值.如果这个静态成员是公有的,那么类的作用域之内的所有代码(不论是在类的内部还是外部)都可以访问这个成员.下面的程序通过静态数据成员来记录链表首项和末项的地址。ﻫ#includeiostream。hﻫ#includestring

8、.hclassListEntry{ﻫpublic:staticListEntry*firstentry;private:staticListEntry*lastentry;char*listvalue;ListEntry* nextentry;ﻫpublic:ﻫListEntry(char*);~ListEntry(){ delete[]listvalue;}ﻫListE

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。