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

漯河市住房和城乡建设局网站手机网站大全

漯河市住房和城乡建设局网站,手机网站大全,仿一个网站,物流网站的建设一、虚构造与虚析构 1、构造函数能否是虚函数#xff0c;为什么#xff1f; 对象有创建过程#xff1a; 1、给对象分配内存 2、根据继承表顺序调用父类构造 3、根据成员对象的的定义顺序调用成员对象的构造函数 4、执行对象自己的构造函数 如果父类的构造函数函数设计…一、虚构造与虚析构 1、构造函数能否是虚函数为什么 对象有创建过程 1、给对象分配内存 2、根据继承表顺序调用父类构造 3、根据成员对象的的定义顺序调用成员对象的构造函数 4、执行对象自己的构造函数 如果父类的构造函数函数设计成虚函数并且被子类覆盖如果虚函数没有被覆盖就设计的没有意义当创建子类对象时先调用父类的虚构造但此时实际对象是子类对象根据多态的特性此时会转而执行子类的构造调用虚函数表中覆盖后的版本但执行子类构造函数前需要先执行父类构造这样就形成了死循环所以构造函数不能设计成虚函数。 #include iostream using namespace std; ​ class Base { public:// error: constructors cannot be declared virtual [-fpermissive] virtual Base(void)virtual Base(void){cout Base构造函数 endl;} }; class Test: public Base { public:Test(void){cout Test构造函数 endl;} }; ​ int main(int argc,const char* argv[]) {return 0; } 2、析构函数能否是虚函数为什么 对象的释放过程 1、执行对象自己的析构函数 2、根据成员对象的创建过程逆序执行成员对象的析构函数 3、根据继承表的顺序逆序执行父类的析构函数 4、释放对象的内存 假如父类的析构函数设计成虚函数并且被子类覆盖当释放子类对象时先执行子类对象的析构函数然后执行父类对象的析构函数此时子类对象已经被释放完毕所以无法形成多态只会执行父类的析构函数不会产生任何错误所以析构函数可以是虚函数。 3、什么情况需要设计虚析构 当使用类多态时使用父类指针、引用去释放子类对象时如果析构函数没有设计成虚函数(没有覆盖)那么将只执行父类的析构函数无法调用子类的析构函数如果子类中有指针成员且指向堆内存这种情况下就会造成内存泄漏。 注意当使用类多态时且子类成员中有指针指向堆内存必须要把父类的析构函数设计成虚函数或者子类的析构函数中有必须要完成的工作时。 #include iostream using namespace std; ​ class Base { public:Base(void){cout Base的构造函数 endl;}virtual ~Base(void){cout Base的析构函数 endl;}virtual void func(void){cout 我是Base类的func函数 endl;} }; ​ class Test : public Base {int* ptr; public:Test(void){ptr new int;cout alloc ptr endl;}~Test(void){delete ptr;cout free ptr endl;}void func(void){cout 我是Test类的func函数 endl;} }; ​ int main(int argc,const char* argv[]) {Base* x new Test;x-func();delete x;return 0; } 总结构造函数不能是虚函数否则会形成死循环析构函数可以设计成虚函数在使用类多态时如果不把析构函数设计成虚函数则子类的析构不会被调用也就说在使用类多态时子类的析构函数想要执行则需要把父类的析构设计成虚函数。 二、类型信息运算符 1、什么类型信息运算符 C中有这个typeid关键字用于获取数据的类型信息。 2、类型信息运算符的作用。 当我们使用类多态时我们很难通过肉眼识别出对象的真实类型特别是在使用工厂模式时如果父子类形成了多态使用typeid就可以获取到对象的真实类型。 以及判断是否函数还是函数指针判断标识符是否指针变量、是否是二级指针。 3、使用方法 1、需要包含头文件 #include typeinfo 并且它设计在std名字空间内。 2、typeid(数据) 会返回一个记录数据类型信息的type_info类型的类对象。 3、type_info 有一个name成员函数会以字符串形式返回类型的名字 1、基本类型返回类型的缩写 2、指针类型以P开头 3、带const属性的名字中会带K 4、复合类型的会返回长度名字 5、如果父类引用指向了子类对象只要父类中定义的虚函数typeid就可以识别出真实的对象类型。 6、如果父类指针指向了子类对象父类中定义的虚函数typeid(*指针)才可以识别出真实的对象类型。 4、type_info 有一些成员函数和运算符函数 判断一个标识符是否是指针变量__is_pointer_p() ​ 判断一个标识符是否是函数 __is_function_p() #include typeinfo using namespace std; ​ struct Student { ​ }; ​ class Base { public:virtual void func(void){ ​} }; ​ class Test : public Base { }; ​ int main(int argc,const char* argv[]) {cout typeid(char).name() endl;cout typeid(short).name() endl;cout typeid(int).name() endl; ​Student s;cout typeid(s).name() endl; ​Test t;Base b t;cout typeid(b).name() endl; ​Base* p new Test;cout typeid(p).name() endl;cout typeid(*p).name() endl; ​cout typeid(main).__is_function_p() endl;cout typeid(p).__is_pointer_p() endl; ​cout (typeid(t) typeid(b)) endl;cout (typeid(t) ! typeid(b)) endl; ​return 0; } 三、强制类型转换 C语言为了兼容C语言依然保留着C语言中的强制类型转换语法但C语言中的强制类型转换有以下缺点 1、任何类型之间都可以强制类型转换所以使用起来比较随意代码的阅读性性差。 2、不会对原数据和目标类型检查程序员需要对转换的结果负责可能会出现数据丢失、段错误等问题。 基于以上原因C之父在C中提供一套更安全的强制类型转换并且C之父认为好的代码设计不应该会使用到强制类型转换当程序需要使用强制类型转换时就说明你的代码设计有问题程序不应该使用强制类型转换而是应该重新修改代码的设计所以强制类型转换的语法设计的难以记忆。 1、去常类型转换 const_cast目标类型(源数据) 源数据和目标类型之间除了const属性不同其它没有任何区别否则就会产生编译错误一般用于去掉指针或引用的常属性。 2、静态类型转换 static_cast目标类型(源数据) 源数据和目标类型之间必须有一个方向能自动类型转换否则就会产生编译错误一般使用在大字节数的数据转换成小字节数的数据。 3、重解释类型转换 reinterpret_cast目标类型(数据) 专用于指针变量的类型转换主要用于指针与指针的转换指针与整数的转换与其它的强制类型转换相比它的自由度比较高但也比较危险。 4、动态类型转换 dynamic_cast目标类型 (数据) 把父类的指针或引用转换成子类的指针或引用并且父类中必须有虚函数表指针。
http://www.w-s-a.com/news/912947/

相关文章:

  • 有没有外包活的网站如何做网站快捷键的元素
  • 公司网站赏析网站制作2019趋势
  • 企业进行网站建设的方式有( )推广引流违法吗
  • 按营销型网站要求重做网站 费用点金网站建设
  • 深圳做网站互联网服务
  • 网站sem托管wordpress安装无法连接数据库
  • 深圳网站建设开发公司哪家好微信小程序商家入口
  • 江门站排名优化建立什么网站赚钱
  • 科普文章在那个网站做招聘网站代做
  • 监控设备东莞网站建设游戏网站域名
  • 对商家而言网站建设的好处网址导航怎么彻底删除
  • app设计网站模板企业展厅策划设计公司有哪些
  • wordpress销售主题手机网站关键词优化
  • 怎么查一个网站是什么程序做的三亚城乡建设局网站
  • 深圳分销网站设计公司做网站一般需要多久
  • 企业网站设计代码丹东seo排名公司
  • 企业网站建设定制开发服务网站建设说课ppt
  • 大连市城乡建设局网站网站免费网站入口
  • 做暧网站网站备案ps
  • 知名网站建设公司电话长子网站建设
  • 网站建设的意义与目的建立什么船籍港
  • 广州注册公司营业执照网站建设代码优化
  • 百度网站官网马克互联网主题 wordpress
  • 网站制作 客户刁难深圳自助建站
  • 怎么去推广一个网站广东餐饮品牌设计
  • 网站代码加密了怎么做兰州最新大事
  • 现在ui做的比较好的网站去年做啥网站致富
  • 广东网站建设咨询电话好牌子网
  • 公司怎样制作网站南阳网站关键词
  • 营销型网站建设与网盟完整php网站开发