Dator
 |  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Hur man använder Kopiera Constructors i C + +

    En kopia konstruktor är en speciell medlem funktion inuti en klass . Den accepterar en referens till ett befintligt objekt av samma klass typ och gör en djup kopia av det objektet . En djup kopia inte bara kopierar alla medlemsländer fält men också kopierar något dynamiskt allokerat minne . C + + kompilatorer gör kopia konstruktion automatiskt . Du måste definiera en kopia konstruktor när din klass innebär dynamiskt minne . Saker du behöver
    Intermediate C + + kunskaper
    C + + kompilator , som Visual Studio 2008
    Visa fler instruktioner
    1

    omdöme när man ska ringa en kopia konstruktör . Det finns tre lägen : . När du skapar ett objekt från ett befintligt objekt av samma typ , när du passerar ett objekt med värde till en funktion och när en funktion returnerar ett objekt
    2

    veta när din C + + klass behöver en kopia konstruktör . Det kokar ner till detta . Om din klass har pekare och det utför dynamisk minnesallokering , då måste du ge det ett uttryckligt kopieringskonstruktor . På ett exempel där man inte behöver definiera en konstruktor för
    3

    Look en C + + klass . Klass X har stack bara variabler och inga pekare . Ett grunt kopia är tillräcklig för att kopiera värdena för ett befintligt objekt till ett nytt objekt . Kompilatorn kan göra detta automatiskt , så du behöver inte definiera en kopia konstruktor för klassen X :
    class X {
    int num ,
    allmänheten :
    X ( ) : num ( 0 ) { }
    ~ X ( ) ;
    };
    4

    studie ett exempel som kräver en explicit copy- constructor definition . Som ni kan se , är storleken på strängen , N , inte en hårdkodad värde utan bestäms av användaren . För att skapa B från A som i uttrycket " ZB ( A ) , " du måste tala om för kompilatorn hur mycket minne att fördela för B. ställe att göra detta är i kopieringskonstruktor , enligt följande :
    klass Z {
    int N ,
    char * str ,
    allmänheten :
    Z ( int n ) : N ( n ) {
    str = new char [ N ] ;
    }
    Z ( Z & andra ) {
    str = new char [ other.GetLen ( ) ] ; Twitter //kopiera data från str av " andra " till str av " detta "
    }
    ~ Z ( ) {
    delete [ ] str ,
    }
    int GetLen ( ) const {
    avkastning N ,
    }
    };

    Addera

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man skriver ett program som kommer ut ordnade par i…
    ·Hur man skriver databasapplikationer med C #
    ·Hur man gör en SWF från C + +
    ·Hur man skriver en multi gängade Tillämpning i MFC
    ·Hur man deklarerar en String i C + +
    ·Hur man gör matriser i C + +
    ·Hur att dölja ett objekt i Visual C
    ·Hur du skapar PDF-filer med C källkod
    ·Hur man skriver ett Parser i C
    ·Hur till Redigera SQL på en iPhone
    Utvalda artiklarna
    ·Hur Code Whois Lookup i Python
    ·Hur man läsa en fil i Fortran
    ·Hur att dölja en Holder Image Plats
    ·Get_Headers Vs. cURL Hastighet på PHP
    ·Hur Importera DLL Använda en Unmanaged kod
    ·Så skyddar Flash-filer för hämtning
    ·Hur du ställer in IIS 6
    ·Lägga till en Permalink
    ·Hur kopierar du en fil i JSP
    ·Hur fixar tabbavståndet i Eclipse
    Copyright © Dator Kunskap http://www.dator.xyz