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

有关网站建设的说说漳浦县城乡规划建设局网站

有关网站建设的说说,漳浦县城乡规划建设局网站,设计网站大全免费下载,金华集团网站建设文章目录C面向对象之多态性1.静态多态2.动态多态3.多态的好处3.1使用方法4.纯虚函数5.虚析构与纯虚析构5.1问题5.2解决6.其他知识点7.代码8.测试结果8.1父类中无虚函数#xff0c;父类的指针指向子类对象#xff0c;将调用父类中的函数#xff0c;无法调用子类中的重写函数面向对象之多态性1.静态多态2.动态多态3.多态的好处3.1使用方法4.纯虚函数5.虚析构与纯虚析构5.1问题5.2解决6.其他知识点7.代码8.测试结果8.1父类中无虚函数父类的指针指向子类对象将调用父类中的函数无法调用子类中的重写函数即无法实现多态8.2父类中的函数由虚函数实现8.3父类指针对象无法释放子类中开辟的堆空间数据8.4将父类的析构函数定义为虚析构函数8.5将父类中的析构函数定义为纯虚析构函数C面向对象之多态性 1.静态多态 通过函数重载和运算符重载实现在编译时确定函数早绑定 2.动态多态 派生类和虚函数实现运行时多态运行阶段实现函数晚绑定。 当子类重写了父类的虚函数时子类中的虚函数表将替换父类中的虚函数 所以当父类的引用或者指针指向子类对象时将发生多态 3.多态的好处 结构清晰 可读性很强 利于后期的拓展和维护 3.1使用方法 父类的引用或者指针指向子类的对象 4.纯虚函数 定义格式virtual 返回值类型 函数名称参数列表 0 类中有了纯虚函数称为抽象类抽象类无法实例化对象 子类必须重写父类中的所有纯虚函数才能实例化对象否则也是抽象类 5.虚析构与纯虚析构 5.1问题 多态使用时如果子类中有属性开辟到了堆区则父类指针释放时无法调用子类的析构函数 5.2解决 将父类中的析构函数改为虚析构函数或者纯虚析构函数 纯虚析构函数需要先声明后实现但是纯虚函数可以只声明 如果子类没有堆区数据可以不将父类的析构函数写成虚析构或者纯虚析构 拥有纯虚析构函数的类也属于抽象类 6.其他知识点 空类即里面什么代码都没有的大小通过sizeof测定的结果是1 vfptr虚函数表指针 —— vftable虚函数表用于记录虚函数的地址 7.代码 #includeiostreamusing namespace std;class Animal { public:Animal() {cout 基类中的构造函数被调用 endl;}// 虚函数虚函数将实现晚绑定virtual void speack() {cout 动物在说话 endl;}virtual ~Animal() 0; // 纯虚析构函数,纯虚析构声明后必须定义 };// Animal中的纯虚析构实现部分可以在这里释放父类开辟的堆空间 Animal::~Animal() {}class Cat :public Animal {public:Cat() {cout cat中的构造函数被调用 endl;}void speack() {cout 小猫在说话 endl;}~Cat() {cout cat中的析构函数被调用 endl;} };class Dog : public Animal { public:void speack() {cout 小狗在说话 endl;}~Dog() {cout dog中的析构函数被调用 endl;} };// 地址早绑定在编译阶段函数地址已经早绑定Animal void doSpeack(Animal animal) {animal.speack(); }// 派生类重写基类中的虚函数当基类的引用或者指针指向派生类时实现多态 void test01() {Cat cat;Dog dog;doSpeack(cat);doSpeack(dog);}// 基类和派生类的构造函数和析构函数的调用 // void test02() {Animal* p_cat new Cat(); // 开辟内存到堆区需要手动释放if (p_cat ! NULL) {delete p_cat; // 释放指针p_cat NULL;}}// -------------------------------------------------------------------------- class CPU { public:virtual void caculate() 0; };class VideoCard { public:virtual void display() 0; };class Memory { public:virtual void storage() 0; };class Computer { public:Computer(CPU *cpu, VideoCard *videoCard,Memory * memory) {this - m_cpu cpu;this - m_vc videoCard;this - m_mem memory;}// 电脑的工作void work() {m_cpu-caculate();m_vc-display();m_mem-storage();}~Computer() {if (m_cpu ! NULL) {delete m_cpu;}if (m_vc ! NULL) {delete m_vc;}if (m_mem ! NULL) {delete m_mem;}}private:CPU* m_cpu;VideoCard* m_vc;Memory* m_mem; }; // inter厂商 class InterCPU :public CPU {public:void caculate() {cout inter的CPU开始计算了 endl;} };class InterVideoCard :public VideoCard {public:void display() {cout inter的显卡开始计算了 endl;} }; class InterMemory :public Memory {public:void storage() {cout inter的内存条开始存储了 endl;} }; // lenovoclass lenovoCPU :public CPU {public:virtual void caculate() {cout lenovo的CPU开始计算了 endl;} };class lenovoVideoCard :public VideoCard {public:virtual void display() {cout lenovo的显卡开始计算了 endl;} }; class lenovoMemory :public Memory {public:virtual void storage() {cout lenovo的内存条开始存储了 endl;} };void test03() {// 创建电脑CPU* interCPU new InterCPU;VideoCard* interCard new InterVideoCard;Memory* interMemory new InterMemory;Computer* computer1 new Computer(interCPU, interCard, interMemory);computer1-work();delete computer1;cout --------------------------- endl;Computer* computer2 new Computer(new lenovoCPU, new lenovoVideoCard,new lenovoMemory);computer2-work();delete computer2;cout --------------------------- endl;Computer* computer3 new Computer(new InterCPU, new lenovoVideoCard, new lenovoMemory);computer3-work();delete computer3; } int main() { //test01();//test02();test03();system(pause);return 0; }8.测试结果 8.1父类中无虚函数父类的指针指向子类对象将调用父类中的函数无法调用子类中的重写函数即无法实现多态 8.2父类中的函数由虚函数实现 父类的指针指向小猫子类将调用小猫类中的重写函数实现多态 8.3父类指针对象无法释放子类中开辟的堆空间数据 cat类中的析构函数没有被调用无法释放开辟的堆空间数据 8.4将父类的析构函数定义为虚析构函数 子类中的析构函数被调用 8.5将父类中的析构函数定义为纯虚析构函数 子类中的析构函数被调用将父类中的析构函数声明为纯虚析构函数后必须要实现声明的函数。
http://www.hkea.cn/news/14517939/

相关文章:

  • 官方网站建设流程iis的网站默认端口
  • 防伪网站怎么做洛阳网站建设培训
  • 移动网站开发框架多用户商城app源码
  • 贵阳网站建设方案报价台州网站排名优化价格
  • 如何整理做网站的素材优秀网站介绍
  • 做海报 画册的素材网站wordpress建站事例
  • 网站用单页面框架做石家庄全网推广
  • 学做的网站基础蛋糕国外设计网站及介绍
  • 网站建设制作细节中国交通建设集团有限公司级别
  • 西安外贸网站建设公司内蒙古建设部网站官网
  • 如何做php网站建设网站赚钱方法
  • 有做直播网网站的公司没有国内seo排名分析主要针对百度
  • 嘉定网站建设网页制作柳州建设网经济适用房
  • 做直播网站找哪家网站好做网站建设费用
  • 上海市住房和城乡建设厅网站青岛seo公司
  • 上海雷蒙威手表网站win7 iis部署网站
  • 济南网站建设平台官网大型的营销型网站建设
  • 网站开发的完整流程爱在发烧 wordpress
  • 用asp.net做的网站有哪些えっちな秘密基地视频
  • 框架型网站微信建设小网站链接
  • 做淘宝客如何建自己的网站wordpress集成微信支付宝
  • 澧县网站建设合肥万户网络
  • 阳光保险网站软件工程学科评估排名
  • 网站建设及报价方案企业网络规划设计方案
  • 男女做那个是的视频网站wordpress自动锚文本
  • php网站开发代码十堰哪里有做网站的
  • 石家庄网站建设今天改网名百度快速优化推广
  • 天津网站建设案例教程海阔淘宝客助手wordpress演示站 | 紫色清新商城模板
  • 昆明城乡建设局网站济南富新网站建设
  • 个人网站免费源码大全抖音头条是seo推广还是sem