欢迎来到天天文库
浏览记录
ID:30777525
大小:66.50 KB
页数:6页
时间:2019-01-03
《c继承机制下的构造函数_c教程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C卄继承机制下的构造函数Java教程C卄继承机制下的构造函数在前一章节中,我们介绍了构造函数的功能和川法,派生类同样冇构造函数。当我们创建一个派生类对象的时候,基类构造函数将会被自动调用,用于初始化派生类从基类中继承过来的成员变量。而派生类中新增的成员变量则需要重新定义构造函数用于初始化了。例1:#includeusingnamcspaccstd;classbook{public:book();book(char*a,doublep=5.0);voidsetprice(doublea);doublegetpri
2、ce()const;voidsettitle(char*a);char*gettitle()const;voiddisplay();private:doubleprice;char*title;};classbookderived:publicbook{"public:voiddisplay();};book::book(char*a,doublep){title二a;price=p;book::book()title="NoTitle";price=0.0;voidbook::setprice(doublea){price=a;
3、}doublebook::getprice()const{rcturnprice;}voidbook::settitle(char*a){title二a;}char*book::gettitle()const{returntitle;}voidbook::display(){cout<4、()«cndl;}intmain(){book_dcrivcdb;b.display();return0;}在木例屮定义了book-derived类,该类没有自身的成员变量,类屮所有成员变呆都继承自book类,类中成员函数仅有一个display函数,该函数遮蔽了基类book中的display函数。在主函数中定义派生类的对象b,Z后调用派生类的display函数,程序运行结果为「ThepriceofNoTitleis$0"。从这例1屮,我们不难看出派生类在创建对象时会白动调用基类构造函数。如果像例1这种情况,派牛类中没有新增成员变量5、,基类的构造函数功能已经满足派牛•类创建対彖初始化需要,则派牛类则无需重新自定义一个构造两数,血接调丿II基类构造隊I数即町。如果派牛类川新增了成员变量,这时如果需要在创建对象时就进行初始化则需要己设计一个构造函数,具体见例2。例2:#includeusingnamespacestd;enumlanguage{none,cpp,java,python,javascript,php,ruby};classbook{public:book();book(char*a,doublep=5.0);voidsetpric6、e(doublea);doublegetpriceOconst;voidsettitle(char*a);char*gettitleOconst;voiddisplay();private:doubleprice;char*title;};classcodingbook:publicbook{public:codingbook():book(){lang=none;}codingbook(languagelang,char*t,doublep);voidsetlang(languagelang);languagegetlang()7、{returnlang;}voiddisplay();private:languagelang;};book::book(char*a,doublep)title=a;price二p;book::book(){title="NoTitlc";price=0.0;}voidbook::setprice(doublea){price二a;}doublebook::getprice()const{returnprice;}voidbook::settitle(char*a){title二a;}char*book::gettitle()c8、onst{returntitle;voidbook::display(){cout<
4、()«cndl;}intmain(){book_dcrivcdb;b.display();return0;}在木例屮定义了book-derived类,该类没有自身的成员变量,类屮所有成员变呆都继承自book类,类中成员函数仅有一个display函数,该函数遮蔽了基类book中的display函数。在主函数中定义派生类的对象b,Z后调用派生类的display函数,程序运行结果为「ThepriceofNoTitleis$0"。从这例1屮,我们不难看出派生类在创建对象时会白动调用基类构造函数。如果像例1这种情况,派牛类中没有新增成员变量
5、,基类的构造函数功能已经满足派牛•类创建対彖初始化需要,则派牛类则无需重新自定义一个构造两数,血接调丿II基类构造隊I数即町。如果派牛类川新增了成员变量,这时如果需要在创建对象时就进行初始化则需要己设计一个构造函数,具体见例2。例2:#includeusingnamespacestd;enumlanguage{none,cpp,java,python,javascript,php,ruby};classbook{public:book();book(char*a,doublep=5.0);voidsetpric
6、e(doublea);doublegetpriceOconst;voidsettitle(char*a);char*gettitleOconst;voiddisplay();private:doubleprice;char*title;};classcodingbook:publicbook{public:codingbook():book(){lang=none;}codingbook(languagelang,char*t,doublep);voidsetlang(languagelang);languagegetlang()
7、{returnlang;}voiddisplay();private:languagelang;};book::book(char*a,doublep)title=a;price二p;book::book(){title="NoTitlc";price=0.0;}voidbook::setprice(doublea){price二a;}doublebook::getprice()const{returnprice;}voidbook::settitle(char*a){title二a;}char*book::gettitle()c
8、onst{returntitle;voidbook::display(){cout<
此文档下载收益归作者所有