C编程之旅第四课初始化C对象

一、初始化与赋值的含义:初始化:包括创建(或说定义)对象并且赋给初值。(如果一个对象只被创建而没有被初始化,则该变量只能用于被赋值)。赋值:擦除对象的当前值并用新值代替。

二、内置类型:

(一)直接初始化:1.空初始化:即无参数无括号形式如inti,newint,newint[10].当在所有函数之外时,初始化为0;当在某一函数中时,没初始化。2.值初始化:即无参数有括号形式,且括号只能在类型名后,而不能在变量名之后,即只能创无名对象。对象被值初始化为0.如:int()//创建了一个无名对象,其被值初始化为0.一般将该无名对象初始化化或赋值给某有名对象,或直接作为无名对象使用newint();newint[10]();//创建了一个无名对象,其被值初始化为0.一般将该无名对象初始化化或赋值给某有名对象vectorvi();//这是vector类等容器定义的一个特殊的构造函数。3.显式初始化:即有参数有括号形式,且当为有名对象时括号在对象名之后,为无名对象时括号在类类型名之后。如:inti(5);newint(5);

(二)复制初始化:1.形式1:inti=5;2.形式2:inti1=5;inti2(i1)或inti2=i1;3.形式3:inti(int(5))或inti=int(5);

三。类类型:

  (一)直接初始化:

     1.空初始化:即无参数无括号形式classAobj或newclassA,newclassA[10].当classA有默认的构造函数时,用该默认构造函数初始化;若classA无默认的构造函数时,则不能这样定义。 2.值初始化:即无参数有括号形式,且括号只能在类型名后,而不能在变量名之后,即只能创无名对象或者在类的初始化列表中。若有默认构造函数,则用这个默认构造函数初始化若无任何构造函数,则会使用值初始化,具体产生什么样的初始值,我有疑问??????若无默认构造函数,但有自定义的构造函数,则不能用值初始化。如:classA();//创建了一个无名对象,一般将该无名对象初始化化或赋值给某有名对象,或直接作为无名对象使用newclassA();newclassA[10]();vectorvi(10);//这是vector类等容器定义的一个特殊的构造函数。 3.显式初始化:即有参数有括号形式,且当为有名对象时括号在对象名之后,为无名对象时括号在类类型名之后如:classAobj(paralist);newclassA(paralist);

(二)复制初始化:

1.形式1:classAobj=onepara;//classA中有一个非explicit的只有一个形参或其引用(onepara与其能匹配)的构造函数才行。2.形式2:classAobj1=onepara或classAobj1(paralist);classAobj2(obj1)或classAobj2=classAobj1;3.形式3:classAobj2(classA(paralist))或classAobj2=classA(paralist);

注意1:在初始化式中符号“=”不是赋值操作符,它能呼叫复制构造函数;注意2:复制构造函数就是指仅有一个形参且该形参是本身类类型的const引用的构造函数;注意3:const对象的初始化同上,只是初始化后其值不能再更改;注意4:引用类型对象的初始化:若不初始化,则其没有意义;非const引用只能指向同类型的非const的对象const引用能指向相关类型的const或非const的对象或字面值,但不可以通过该引用去修改其绑定的对象。









































北京最好白癜风医院咨询
点滴状白癜风



转载请注明:http://www.nydjfy.com/pxxx/pxxx/2746.html

  • 上一篇文章:
  •   
  • 下一篇文章: