对象的初始化:确保对象在使用之前被初始化 `

本文探讨了C++中对象初始化的重要性,强调应在使用对象之前确保其已被初始化。对于基本数据类型,需要手动初始化,而对于非基本类型,构造函数应负责初始化所有成员。介绍了构造函数中的赋值与初始化的区别,建议始终使用初始化列表,并提供了解决跨编译单元中静态对象初始化次序问题的方法,即把non-local static对象移到单独的返回引用的函数中。
摘要由CSDN通过智能技术生成

       

问题1: 如果写:int i; 在某些语境下保证会被初始化为0,单其他语境中不保证;于是有了“对象的初始化动作何时一定发生?”,但是不幸的是:规则太复杂;

  • 因此,最佳处理办法就是:永远在使用对象之前就将他初始化。
构造函数是任何对象创建时自动调用的第一个成员函数;另外也给可能存在的隐含成员:vptr创建一个初始化的机会;
        对于基本数据类型和非基本数据类型规则分别是:
  • 对于无任何的成员的基本数据类型,必须手工完成
  • 对于非基本数据类型,初始化责任落在了构造函数身上,规则为:确保每一个构造函数都将对象的每一个成员初始化

       构造函数中的 赋值和初始化:

赋值:

class my_class{

public:

my_class(const std::string& name,const std::string& address, const int id);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值