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

推荐微商城网站建设展示型企业网站营销目标主要有

推荐微商城网站建设,展示型企业网站营销目标主要有,seo技术顾问阿亮,大连哪里做网站好文章目录 背景多态示例#xff1a;父类指针指向子类对象父类指针指向子类对象#xff0c;如何通过父类指针访问到子类特定的成员变量实现动态多态的四种手段#xff1a;基类的指针或引用指向或引用一个派生类对象#xff08;new或不new#xff09; 背景 比如有父类Animal… 文章目录 背景多态示例父类指针指向子类对象父类指针指向子类对象如何通过父类指针访问到子类特定的成员变量实现动态多态的四种手段基类的指针或引用指向或引用一个派生类对象new或不new 背景 比如有父类Animal和子类Cat用new创建对象有以下四种方式 Animal* p new Cat(); Animal* pp new Animal(); Cat* q new Cat(); Cat* qq new Animal(); 其中第四种是不合法的。 第二种和第三种都好理解但是第一种用父类指针指向了子类对象这种是干嘛用的的 这是用来实现多态的 多态示例父类指针指向子类对象 使用父类指针指向子类对象时可以实现多态性即在运行时根据对象的实际类型来调用相应的函数。这样可以方便地实现代码的扩展和维护同时也可以提高代码的可读性和可维护性。 下面是一个简单的示例代码演示了使用父类指针指向子类对象的好处 #include iostream using namespace std;class Animal { public:virtual void speak(){cout Animal speaks endl;}string name; };class Cat : public Animal { public:void speak(){cout Cat speaks endl;}string name; };class Dog : public Animal { public:void speak(){cout Dog speaks endl;} };int main() {Animal *p1 new Cat();Animal *p2 new Dog();p1-speak(); // 输出 Cat speaksp2-speak(); // 输出 Dog speaksdelete p1;delete p2;return 0; }在上面的代码中Animal是一个基类Cat和Dog是Animal的子类。在main函数中我们使用Animal指针p1和p2分别指向Cat对象和Dog对象。由于speak函数是虚函数因此在运行时会根据对象的实际类型来调用相应的函数。因此p1-speak()会调用Cat类中的speak函数输出Cat speaksp2-speak()会调用Dog类中的speak函数输出Dog speaks。 如果我们不使用父类指针指向子类对象而是直接使用Cat和Dog对象那么我们就需要分别调用它们的speak函数这样会导致代码的重复和冗余不利于代码的扩展和维护。 父类指针指向子类对象如何通过父类指针访问到子类特定的成员变量 当使用父类指针指向子类对象时无法直接访问子类中特定的成员变量。但是可以通过将父类指针转换为子类指针或引用来访问子类中特定的成员变量。 在C中可以使用dynamic_cast运算符将父类指针或引用转换为子类指针或引用从而访问子类中特定的成员变量。需要注意的是dynamic_cast运算符只能用于含有虚函数的类类型之间的转换而且转换时会进行类型检查如果转换失败会返回空指针或引用。 下面是一个简单的示例代码演示了如何使用dynamic_cast运算符访问子类中特定的成员变量 #include iostream using namespace std;class Animal { public:virtual void speak(){cout Animal speaks endl;} };class Cat : public Animal { public:string name;void speak(){cout Cat speaks endl;} };int main() {Animal *p new Cat();p-speak(); // 输出 Cat speaksCat *q dynamic_castCat *(p);if (q ! nullptr){q-name Tom;cout q-name endl; // 输出 Tom}delete p;return 0; }在上面的代码中Animal类中没有定义name成员变量而Cat类中定义了name成员变量。在main函数中我们使用Animal指针p指向Cat对象然后使用dynamic_cast运算符将p转换为Cat指针q从而访问Cat类中的name成员变量。需要注意的是在转换时需要进行类型检查如果转换失败会返回空指针。 参考文章C四种cast转换const_cast、static_cast、dynamic_cast、reinpreter_cast类型转换运算符 实现动态多态的四种手段基类的指针或引用指向或引用一个派生类对象new或不new 可以定义一个基类的指针或引用然后将其指向或引用一个派生类的对象。这样通过基类的指针或引用调用虚函数时会根据实际指向的对象类型来动态调用相应的函数从而实现多态。 下面是一个使用指针实现多态的示例代码 #include iostream using namespace std;// 重写示例 class Base { public:virtual void func(){cout Base::func() endl;} };class Derived : public Base { public:virtual void func(){cout Derived::func() endl;} };int main() {// 方法1new父类指针指向子类对象Base *p new Derived();p-func(); // 输出 Derived::func()delete p;cout ---- endl;// 或者// 方法2不new父类指针指向子类对象Derived dd;Base *pp dd;pp-func(); // 输出 Derived::func()cout ---- endl;// 或者// 方法3不new父类引用引用子类对象Derived ddd;Base ppp ddd;ppp.func(); // 输出 Derived::func()cout ---- endl;// 或者// 方法4new父类引用引用子类对象Base pppp *(new Derived());pppp.func(); // 输出 Derived::func()delete pppp;return 0; }在上面的代码中定义了一个基类的指针或引用然后将其指向一个派生类对象。通过基类的指针或引用调用虚函数时会根据实际指向的对象类型来动态调用相应的函数从而输出派生类中的func()函数的内容。
http://www.hkea.cn/news/14587264/

相关文章:

  • 太原网站优化哪家专业做外贸纱线用什么网站
  • 徐州市工程造价信息网网站的链接优化
  • 微网站 举例营销方案范文100例
  • 无锡网站设计哪家公司好长春九台建设局网站
  • 大连建设网水电泉州seo建站
  • 烟台建设用地规划查询网站用wordpress如何添加关键字
  • html5 手机网站开发叫才51模板ppt
  • html静态网站开发实验flash中文网站模板
  • 货运代理网站模板做网站小语种翻译多少钱
  • 亚马逊网站开发使用的什么方式室内设计软件下载网站大全
  • 苏州工业园区两学一做教育网站旅游网站怎么用dw做
  • 为进一步加强网站建设wordpress 课程主题
  • 建站平台控制山东省菏泽市城乡建设局网站
  • 视频弹幕网站怎么做的大连网络公司哪家好
  • 网站支付页面源代码软件开发包含哪些内容
  • iis配置静态网站河北邢台市的快递能收吗
  • 湖南建设监理官方网站重庆建设工业集团官网
  • 深圳市工商注册信息查询网站asp网站架设教程
  • 吉林市网站建设公司wordpress 首页折叠
  • 网站如何进行品牌建设要多少钱
  • 北京做网站维护吴忠网页设计
  • 一个网站余姚什么网站开发费属于研发支出吗
  • 郑州专业网站建设公司首选服务定制网站
  • 网站建设如何提高转化率一个app能卖多少钱
  • 烟台H5高端网站建设如何设计网站的链接
  • 网站排名方法安徽省水利建设厅官方网站
  • 西宁做网站君博领先广东短视频seo搜索哪家好
  • 青岛网站制作方案提升学历的重要性与意义
  • 个人网页设计概述厦门做网站优化的公司
  • 优化设计官方网站wordpress qps