网站大量收购独家精品文档,联系QQ:2885784924

面向对象程序设计课件第4章.ppt

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象程序设计课件第4章

TechEd 2002 第4章 构造函数与析构函数 4.1 对象的创建 [例4-1]定义一个Rectangle类并创建类对象 #include iostream using namespace std; class Rectangle //声明类 { private: //定义私有数据成员 int length; int width; public: //定义公有函数成员 void set(int l,int w) { length = l; width=w;} void Area() ; }; void Rectangle::Area() { cout矩形面积为length*widthendl; } int main() { Rectangle Rectangle1, Rectangle2; Rectangle1.set(20,40); Rectangle1.Area(); Rectangle2.set(30,60); Rectangle2.Area(); } 4.2 构造函数 由于类的封装性,类的对象的初始化的任务只能由类的成员函数完成:构造函数。 构造函数:在类定义体中,与类同名的成员函数。 作用:在创建对象时,由系统自动调用(在编译时,由编译器自动完成),对对象进行初始化。 析构函数:在类定义体中,与类同名、并在前面冠以“~”的成员函数。 作用:释放对象在构造中分配的资源(例如:关闭被构造函数打开的文件,释放动态内存)。在对象生命期结束时,由系统自动调用,并且以与构造函数相反的调用顺序被调用。 #includeiostream using std::cout; using std::endl; class Desk { public: Desk(); protected: int weight; int height; int width; int length; }; class Stool { public: Stool(); protected: int weight; int height; int width; int length; }; void fn( ) { Desk da; Stool sa; } void main( ) { fn( ); } 若将上例中的函数fn()中定义桌子对象的语句改成定义对象数组: [例4-3]对[例4-1]进行改进使用构造函数 #include iostream using namespace std; class Rectangle //声明类 { private: //定义私有数据成员 int length; int width; public: //定义公有函数成员 Rectangle (int l,int w) { length = l; width=w; } void Area(); }; void Rectangle::Area() { cout矩形面积为 length*widthendl; } int main() { Rectangle Rectangle1(20,40),Rectangle2(30,60); Rectangle1.Area(); Rectangle2.Area(); return 0; } 4.2.1 默认构造函数 C++语言规定,每个类必须有一个构造函数,没有构造函数,就不能创建对象。如果在定义类时没有定义构造函数,则C++语言为其提供了一个默认的构造函数。这个默认的构造函数是一个无参的构造函数,它仅负责创建对象,而不做任何初始化工作。如果创建全局或静态对象,则对象的数据成员的初值为0;否则是随机数。如果类中定义了构造函数,则C++语言就不提供默认的构造函数。 [例4-4] 调用默认构造函数 #include iostream using namespace std; class Circle { private: int radius; public: void Area() { coutArea= 3.14149*radius*radiusendl; } }; int main() { Circle Circle1; Circle1.Area(); } 上例中的类定义等价下面的类定义: #include iostream.h using namespace std; class

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档