- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编程高手之路-- C++入门—类对象数组和静态成员一、类对象数组类的对象和C++其他数据类型一样,也可以为其建立数组,数组的表示方法和结构一样。#include iostream.hclass Date{int mo,da,yr;public:Date(int m=0,int d=0, int y=0) { mo=m; da=d; yr=y;}void display() const { coutMO }};int main(){Date dates[2];Date today(12,31,2003);dates[0]=today;dates[0].display();dates[1].display();return 0;}1.类对象数组和默认构造函数在前面已经说过,不带参数或者所有参数都有默认值的构造函数叫做默认构造函数。如果类中没有构造函数,编译器会自动提供一个什么都不做的公共默认构造函数 。如果类当中至少有一个构造函数,编译器就不会提供默认构造函数。如果类当中不含默认构造函数,则无法实例化其对象数组。因为实例花类对象数组的格式不允许用初始化值来匹配某个构造函数的参数表。上面的程序中,main()函数声明了一个长度为2的Date对象数组,还有一个包含初始化值的单个Date对象。接着把这个初始化的Date对象赋值给数组中第一个对象,然后显示两个数组元素中包含的日期。从输出中可以看到,第一个日期是有效日期,而第二个显示的都是0。当声明了某个类的对象数组时,编译器会为每个元素都调用默认构造函数。下面的程序去掉了构造函数的默认参数值,并且增加了一个默认构造函数。#include class Date{int mo, da, yr;public:Date();Date(int m,int d,int y) { mo=m; da=d; yr=y;}void display() const { cout MO }};Date::Date(){cout endl;mo=0; da=0; yr=0;}int main(){Date dates[2];Date today(12,31,2003);dates[0]=today;dates[0].display();dates[1].display();return 0;}运行程序,输出为:Date constructor runningDate constructor running12/31/20030/0/0从输出中可以看出,Date()这个默认构造函数被调用了两次。2.类对象数组和析构函数当类对象离开作用域时,编译器会为每个对象数组元素调用析构函数。#include iostream.hclass Date{int mo,da,yr;public:Date(int m=0,int d=0,int y=0) { mo=m; da=d; yr=y;}~Date() {coutendl;}void display() const {coutMO }};int main(){Date dates[2];Date today(12,31,2003);dates[0]=today;dates[0].display();dates[1].display();return 0;}运行程序,输出为:12/31/20030/0/0Date destructor runningDate destructor runningDate destructor running表明析构函数被调用了三次,也就是dates[0],dates[1],today这三个对象离开作用域时调用的。二、静态成员可以把类的成员声明为静态的。静态成员只能存在唯一的实例。所有的成员函数都可以访问这个静态成员。即使没有声明类的任何实例,静态成员也已经是存在的。不过类当中声明静态成员时并不能自动定义这个变量,必须在类定义之外来定义该成员。1.静态数据成员静态数据成员相当于一个全局变量,类的所有实例都可以使用它。成员函数能访问并且修改这个值。如果这个静态成员是公有的,那么类的作用域之内的所有代码(不论是在类的内部还是外部)都可以访问这个成员。下面的程序通过静态数据成员来记录链表首项和末项的地址。#include iostream.h#include string.hclass ListEntry{public:static ListEntry* firstentry;private:static ListEntry* last
文档评论(0)