色色一区二区三区,一本大道道久久九九AV综合,国产香蕉97碰碰视频va碰碰看,综合亚洲国产2020

    <legend id="mljv4"><u id="mljv4"><blockquote id="mljv4"></blockquote></u></legend>

    <sub id="mljv4"><ol id="mljv4"><abbr id="mljv4"></abbr></ol></sub>
      <mark id="mljv4"></mark>

      當(dāng)賦值運(yùn)算符&#x27;=&#x27;也可以這樣做時(shí),復(fù)制構(gòu)造函數(shù)有什

      2021-02-24 17:15

      C++提供復(fù)制構(gòu)造函數(shù)的原因。賦值運(yùn)算符可以執(zhí)行相同的任務(wù)。復(fù)制構(gòu)造函數(shù)比賦值運(yùn)算符有什么優(yōu)點(diǎn)嗎?

      解答動(dòng)態(tài)

      • 你可以用一個(gè)復(fù)制構(gòu)造函數(shù)做的事情,你不能用賦值做(無論是簡(jiǎn)單的還是完全的)運(yùn)算符:
        復(fù)制類沒有默認(rèn)構(gòu)造函數(shù)的。例如,如果一個(gè)類表示一個(gè)打開的文件,如果不將文件名傳遞給具有昂貴的默認(rèn)構(gòu)造函數(shù)的open.
        Copy類,則可能無法構(gòu)造一個(gè)文件?赡軜(gòu)造函數(shù)分配了大量?jī)?nèi)存,一旦使用賦值運(yùn)算符將新狀態(tài)復(fù)制到對(duì)象中,這些內(nèi)存就會(huì)被釋放。
        按值傳遞類的實(shí)例。這就是復(fù)制構(gòu)造函數(shù)的最初目的。在C語言中,如果按值傳遞struct,編譯器只需按位復(fù)制該結(jié)構(gòu),這樣接收函數(shù)就有一個(gè)本地副本,可以在不影響調(diào)用方的情況下進(jìn)行修改。但是C++認(rèn)識(shí)到,位拷貝不是復(fù)制大多數(shù)對(duì)象的最佳方式,因此它允許您編寫自己的復(fù)制構(gòu)造函數(shù)(并且默認(rèn)復(fù)制行為也不同,因?yàn)轭惓蓡T可能有自定義復(fù)制構(gòu)造函數(shù))。因?yàn)樵陬愐呀?jīng)構(gòu)造之后,不能重新分配引用。復(fù)制構(gòu)造函數(shù)和賦值運(yùn)算符只是在涉及引用時(shí)做不同的事情。復(fù)制構(gòu)造函數(shù)初始化引用以指向引用在被復(fù)制的實(shí)例中指向的同一對(duì)象;賦值運(yùn)算符實(shí)際復(fù)制被引用對(duì)象的值。
        復(fù)制具有常量成員的類。(請(qǐng)注意,類可以有一個(gè)默認(rèn)構(gòu)造函數(shù),但仍然有常量成員。)

        • 無論是否有復(fù)制構(gòu)造函數(shù),您都必須將新對(duì)象初始化為穩(wěn)定的初始狀態(tài),賦值運(yùn)算符隨后可以更新該狀態(tài)。
          雖然您當(dāng)然可以在沒有復(fù)制構(gòu)造函數(shù)的情況下執(zhí)行此操作,但有一個(gè)復(fù)制構(gòu)造函數(shù)有助于優(yōu)化一個(gè)新對(duì)象的初始化,通過將其設(shè)置為預(yù)先復(fù)制另一個(gè)對(duì)象的狀態(tài),而不需要您首先將新對(duì)象初始化為默認(rèn)狀態(tài),然后使用單獨(dú)的賦值重置該狀態(tài)。這樣,您可以在1次操作而不是2次操作中設(shè)置新對(duì)象的狀態(tài)。不能總是實(shí)現(xiàn)復(fù)制構(gòu)造函數(shù)as
          Foo(const Foo&f){*this=f;} 賦值運(yùn)算符假定您有一個(gè)有效的、完全構(gòu)造的對(duì)象。復(fù)制構(gòu)造函數(shù)不做這樣的假設(shè)。這意味著,根據(jù)您的類,賦值運(yùn)算符可能會(huì)在重新初始化之前嘗試清除對(duì)象上的任何數(shù)據(jù)。或者甚至可以重新利用對(duì)象上已有的數(shù)據(jù)。

          • End

          免責(zé)聲明:

          本頁內(nèi)容僅代表作者本人意見,若因此產(chǎn)生任何糾紛由作者本人負(fù)責(zé),概與琴島網(wǎng)公司無關(guān)。本頁內(nèi)容僅供參考,請(qǐng)您根據(jù)自身實(shí)際情況謹(jǐn)慎操作。尤其涉及您或第三方利益等事項(xiàng),請(qǐng)咨詢專業(yè)人士處理。