踏雪有痕-变量初始化





如果变量在全局域中定义,那么系统会保证给它提供初始值0;
如果变量在局部域中定义或通过new表达式动态分配的,则系统不会提供初始值0。这戏对象被称为未初始化的(与他关联的内存区中含有一个随机的位串,可能是以前使用的结果)。

下面举两个例子(见注释):
1、

 using   namespace   std;

int a;   //未初始化,系统自动初始化为0
main()
{
    
int b;
           cout
<<a<<"/n"<<b<<endl;  //会出现运行期错误
}


2、
#include <string>
using   namespace   std;
string as;  //未初始化,系统自动初始化为0
main()
{
    
string bs  ;      //未初始化,运行无误,应该调用默认构造函数。
    cout<<as<<" "<<bs<<endl;  //返回两个空串
}

由此可以看出,对于有默认构造函数的类,在哪里定义都会默认调用构造函数初始化。
使用未初始化的对象是错误的,因此建议对每个对象提供一个初始值。

另外,初始化有两种形式:
  
 int a = 666;     //显式初始化
 int a(666);       //隐式初始化

需要思考一些这两种形式调用类的那种操作符???

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值