博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++编译器构造析构方案 PK 对象显示初始化方案
阅读量:4211 次
发布时间:2019-05-26

本文共 932 字,大约阅读时间需要 3 分钟。

设计构造函数和析构函数的原因:

       在说这个原因之前,先说一下普通方案的初始化的原理,在普通方案中,先创建一个对象,然后这个对象去调用一个普通函数init()去进行初始化工作。这种普通方案存在两个缺点,第一个是每次创建一个对象,都需要显示的去调用一个函数去进行初始化,麻烦,如果由于失误,而忘记去调用这个初始化的函数,这个时候可能就会出现致命性的错误,因为没有初始化的对象真的很危险。第二,其不能解决所有的问题,比如,Test a[1021]={t1,t2..,,}这么多对象,难道要一个个的依次去显示的调用这个普通init函数么。而如果用构造函数,则完全没有这些问题,把所有的初始化和结束工作分别放在构造函数和析构函数中,就可以解决这些问题。具体的看如下代码:

       

#include 
using namespace std;class Test3{public: void init(int _a, int _b) { a = _a; b = _b; }protected:private: int a; int b;};void main31(){ //类没有提供构造函数,c++编译器会自动给你提供一个默认的构造函数 //类没有提供构造函数 copy构造构造函数, c++编译器会自动给程序员提供一个 默认的copy构造函数 = Test3 t1; int a = 10; int b = 20; t1.init(a, b); Test3 tArray[3]; tArray[0].init(1, 2); tArray[1].init(1, 2); tArray[2].init(1, 2); // Test3 t21; t21.init(1, 2); Test3 t22; t22.init(1, 2); Test3 t23; t23.init(1, 2); //在这种场景之下 显示的初始化方案 显得很蹩脚 Test3 tArray2[3] = {t21, t22, t23}; //在这种场景之下,满足不了,编程需要 Test3 tArray3[1999] = {t21, t22, t23}; cout<<"hello..."<

       

          

 

 

转载地址:http://phzmi.baihongyu.com/

你可能感兴趣的文章
不存在插入的一种写法
查看>>
p_vipshop_to_actual_day_shop_sale
查看>>
写MySQL存储过程实现动态执行SQL
查看>>
P_sync_etl_mid_data
查看>>
js正则表达式语法
查看>>
常用正则表达式大全 (转)
查看>>
mysql版同步数据
查看>>
MySQL参数DELAY_KEY_WRITE的详细说明
查看>>
利用MYSQL 日志恢复
查看>>
mysql 大量数据插入(可用于数据添加字段不能添加的情况,因为会copy临时表。这样可以手动分批处理)
查看>>
MySQL数据库中表类型MyISAM与InnoDB的区别
查看>>
windows mysql忘记root密码的解决方法
查看>>
[MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键
查看>>
MySql中启用InnoDB数据引擎的方法
查看>>
INNODB 热备工具试验与总结
查看>>
sql server 查看字段备注等信息
查看>>
win10 sql server 2014 服务中需要设置失败后自动重启
查看>>
Windows下单机安装Spark开发环境
查看>>
tomcat如何配置环境变量
查看>>
Maven实战(三)Eclipse构建Maven项目
查看>>