黑白程式

黑白程式

导航

对象的初始化(转)

对象的初始化

对象必须正确初始化,才能正常使用:

  1. int i = 10;  
  2. cout << i << endl; 

对象常常包括几种初始化的方式,我们在此归纳一下,并进行详细解析。其中:t是一个属于T类型的对象,x属于另外一个类X。

T t:该形式直接调用T的构造函数,完成t的初始化。

T t2(t):该形式调用T的拷贝构造函数T(const T &)。

T t(x):该形式调用转换构造函数T(const X &)。

T t2 = t:现在的大部分编译器都会将以上语句直接优化成:

T t2(t);

也就是说,它直接调用转换构造函数T(const X &)。

T t2 = x:在编译器进行优化的情况下,它等价于:

  1. T t2(x); 

也就是说,它直接调用转换构造函数T(const X &)。但是在没有进行优化的情况下,它会先构造一个对象,然后对其进行赋值:

  1. T temp(x);  
  2. T t2(temp); 
C++的构造函数非常强大,因此也带来了C++对象的初始化非常简单、灵活。当然,这种"灵活"的C++语法也带来了副作用,即"捉摸不透",对于那些即将准备应聘笔试的C++程序员来说,最好能够记住以上的几种方式的解释,因为它们很有可能成为考官藉以得意的考题。

posted on 2009-07-23 13:41  黑白程式  阅读(141)  评论(0编辑  收藏  举报