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

百度采购网官方网站网络建设公司方案

百度采购网官方网站,网络建设公司方案,vi设计公司排行,郴州新网手机版默认情形下,成员函数的解析都是编译时静态进行。如果要让成员函数的解析在程序运行时动态进行,需要在成员函数的声明前加上关键字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.15wanjia.com/news/177470.html

相关文章:

  • php完整电商网站开发源码潍坊网站建设费用
  • 北海建设网站常熟网站建设都找聚尚网络
  • 网站应急响应机制建设军队采购网官网
  • 快速搭建个人网站网站怎么做移动图片大全
  • 专业网站建设网站价格企业网站建设的方法
  • 做微站比较好的网站佛山市和城乡建设局网站首页
  • 更换网站程序深圳市网站制作最好的公司
  • 用wordpress做网站教程门户网站开发流程视频
  • 网站需求清单汕头个人网站建设
  • 跨越网站建设科技有限公司制作网络广告教学设计
  • 天河区建网站公司网站建设的意义方案
  • 长春网站建设培训班wordpress收录p
  • 河北互联思维网站建设甘肃省长城建设集团网站
  • wordpress支付宝打赏铜陵seo
  • 在线制作网站系统初中电脑做网站的软件
  • 网站建设公司公司模板建站广团
  • 三亚网站怎么制作网站前端用什么做
  • react是网站开发做刷单网站犯法吗
  • 公司做网站都需要什么流程今天高清视频免费播放
  • 崇明做网站好玩又不用实名认证的游戏
  • 怎么才可以做网站建设工程施工许可证查询网站
  • 网站提示代码四省网站建设
  • 宁波企业自助建站24小时最新军事新闻
  • 快速让百度收录网站网站建设上线问题
  • 沙井品牌网站建设深圳做网站d
  • 诸暨有哪些好网站制作公司wordpress百度主动不推送了
  • 重庆市建设工程造价管理站欧美一级a做爰片免费网站
  • 网站建设怎么分类网页设计找工作
  • 做文献综述的文章用什么网站汕头网站搜索优化
  • 贵阳建站南京淄博网站建设工作室