错误发生原因之首

       昨天发生了一个错误,错误的原因非常简单就是因为,没有初始化。《C++编程思想》提出了一个观点,大多数的错误都是因为没有初始化。那么,我们认为C++和C的一个重要区别就是提供了类,而类的出现是为了聚合同类的数据和操作。但为什么会有构造函数和析构函数呢?我觉得这就是C++的哲学了——为了规避初始化之痛。
       我们知道局部变量是不会默认初始化的。但对于类来说,我们通常有意识的在构造函数中初始化这些变量或者对象。注意,这里是个关键,如果没有特殊指定,构造函数会调用成员对象的默认构造函数,这里就是关键所在了。对于基础变量来说,是没有所谓构造函数的,那么这部分变量就必须在构造函数中显示初始化。但我们认为这并不是特别容易出错的地方。
那么对于struct呢?C++中的Struct,我们可以认为这就是一个类,不同的只是这个类的默认对象权限不同。对于struct的运用,我们通常沿袭了C的用法。我犯的错误是没有初始化Struct。养成一个好习惯很重要,那么对于C风格的Struct,我们应该习惯用memset初始化一下,这能规避很多错误。呵呵,不用担心这没有问题,C风格的Struct不存在隐含成员,所以一般不会造成错误。我相信virtual是很少出现在struct中的。
OK! 所以,最重要的原则——对象(变量,资源……)务必在使用前初始化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值