当前位置: 首页 > news >正文

学校网站建设先进个人荣誉网站建设无广告语

学校网站建设先进个人荣誉,网站建设无广告语,如何查看网络服务商,淘客网站做百度推广默认情形下,成员函数的解析都是编译时静态进行。如果要让成员函数的解析在程序运行时动态进行,需要在成员函数的声明前加上关键字virtual: //LibMat声明表示,其析构函数和print()函数皆为虚函数 class LibMat{ public:LibMat(){c…

默认情形下,成员函数的解析都是编译时静态进行。如果要让成员函数的解析在程序运行时动态进行,需要在成员函数的声明前加上关键字virtual:

//LibMat声明表示,其析构函数和print()函数皆为虚函数
class LibMat{
public:LibMat(){cout<<"LibMat::LibMat() default constructor!\m";}virtual ~LibMat(){cout<<"LibMat::~LibMat() destructor!\n";}virtual void print()const{cout<<"LibMat::print()--I am a LibMat object!\n";}
};

虚函数的作用:
用基类的指针指向不同的派生类的对象时,基类指针调用其虚成员函数,会调用真正指向对象的成员函数,而不是基类中定义的成员函数;若不是虚函数,则只会调用基类中定义的那个函数

void print(const LibMat &mat)
{cout<<"in global print():about to print mat.print()\n";//下一行会依据mat实际指向的对象//解析该执行哪一个print()成员函数mat.print();
}
//main函数中重复调用print()
//并依次将三个对象作为参数传递给它
//每次执行
int main()
{cout<<"\n"<<"Creating a LibMat object to print()\n";LibMat libmat;print(libmat);cout<<"\n"<<"Creating a Book object to print()\n";Book b("The Castle","Franz Kafka");print(b);cout<<"\n"<<"Creating an AudiBook = object to print()\n";AudioBook ab("Man without Qualities","Robert Musil","Kenneth Meyer");print(ab);
}
class Book : public LibMat {  //定义派生类Book,继承自LibMat
public:Book( const string &title, const string &author ): _title( title ), _author( author ){cout << "Book::Book( " << _title<< ", " << _author << " )  constructor\n";}~Book(){cout << "Book::~Book() destructor!\n";}virtual void print() const {cout << "Book::print() -- I am a Book object!\n"<< "My title is: " << _title << '\n'<< "My author is: " << _author << endl;}const string& title() const { return _title; }const string& author() const { return _author; }protected:string _title;string _author;
};

被声明为protected的所有成员都可以被派生类直接访问;除了派生类之外,都不得直接访问protected成员。

class AudioBook : public Book {
public:AudioBook( const string &title,const string &author, const string &narrator ): Book( title, author ), _narrator( narrator ){cout << "AudioBook::AudioBook( " << _title<< ", " << _author<< ", " << _narrator<< " )  constructor\n";}~AudioBook(){cout << "AudioBook::~AudioBook() destructor!\n";}virtual void print() const {cout << "AudioBook::print() -- I am a AudioBook object!\n"<< "My title is: " << _title << '\n'<< "My author is: " << _author << '\n'<< "My narrator is: " << _narrator << endl;}const string& narrator() const { return _narrator; }protected:string _narrator;
};

派生类的构造函数作用后顺序:
基类的构造函数、派生类的析构函数、基类的析构函数。

总结

示例中分别实现了三种类:LibMatBookAudioBook

  1. 三者的成员函数有重合之处,其中print()这一成员函数的具体实现各有不同,使用virtual关键字,以调用真正指向的对象的成员函数(虚拟调用);
  2. 使用:号和public实现派生类继承的标记,不必刻意区分“继承而来的成员”和“自身定义的成员",在其使用上无特别的不同之处;
  3. 被声明为protected的所有成员都可以被派生类直接访问;
    除了派生类之外,都不得直接访问protected成员。
  4. 当程序定义出一个派生对象,基类和派生类的构造函数都会被执行;
    当派生对象被销毁时,基类和派生类的析构函数也都会被执行,且执行顺序颠倒
http://www.yayakq.cn/news/187191/

相关文章:

  • lnmp网站开发个人怎么做跨境电商
  • 自己做公司网站简单吗潍坊专业输送带产品介绍
  • 怎样提高网站排名wordpress主题academy
  • 做视频网站怎么看不会卡网页设计作业动漫网页
  • 迅雷资源做下载网站张家界网站建设
  • 优化网站教程wordpress 加轮播图
  • 网站收录入口是什么公司的网址是什么
  • 网站建设服务费费计入什么科目自适应网站用什么软件设计
  • 郑州教育网站建设神华科技 网站建设
  • 郑州 公司网站制作企业网站规划与设计
  • 建设一个网站大概需要多少钱一篇好的营销软文
  • 如何建立一个网站要多少钱固原网络营销网络推广方案
  • 南阳网站关键词江苏新宁建设集团网站
  • 一个网站的成本甘肃省住房和城乡建设部网站
  • 网站直接访问精准营销论文
  • php学什么可以做网站企业宣传ppt案例欣赏
  • 怎么制作自己公司网站阿里云服务器责任怎么做网站
  • 电子商务网站开发与设计化州+网站建设
  • 医院网站建设系统十大创意网站
  • asp access 手机站 用于做微网站wordpress版本列表
  • 网页新建站点怎么添加网站程序
  • 安徽国贸网站建设公司怎么推广网络营销
  • 宠物网站首页模板广州做营销型网站建设
  • wap网站平台俄罗斯网站域名注册
  • 北京中国建设工程造价管理协会网站网站愉建设
  • 中国临沂网站优化网络规划设计师通过率是多少
  • 怎么制作网站教程步骤视频系部网站建设管理方案
  • 做网站的p什么2003网站首页怎么做营业执照链接
  • vs2010网站开发教程网站优化策略
  • 做网站需要宽带在线做网站索引