2012-05-24 16 views
5

Sto leggendo un libro, la guida di Primer al C++.Questi termini C++ sono corretti?

Penso di aver capito fino a un punto, voglio solo chiarire alcune cose.

  1. Si dice che un class è come un tipo di dati (Un tipo di dati essendo int, char, ect ..) e che un Object/istanza è come una variabile. È vero?

  2. Che cos'è un modulo dati?

  3. Quale parte di una dichiarazione è la dichiarazione? È lo data type + the variable e il = è il compito?

+4

Perché così tanti downvotes? – TeaOverflow

+0

Non lo so; Ho pensato che le domande sarebbero state semplici e ho avuto il tempo di scrivere le domande in modo da poterle restituire in modo efficiente. – Ayfiaru

+2

Penso che sia un po 'duro. Se sta già leggendo un libro ed è confuso, sono domande valide. –

risposta

5

Non proprio.

Una classe è "come un tipo di dati" nel senso che è un modello per la creazione di un oggetto, ma non è di per sé un oggetto che è possibile utilizzare.

Quando si utilizza quel modello per creare un'istanza di un oggetto, è possibile utilizzare tale oggetto. Puoi creare tutte le istanze che vuoi - puoi pensare a quelle istanze come variabili.

Ad esempio:

class Person 
{ 
    public: 
     Person() : name("Joe Bloggs") {} 

     std::string getName() { return name; } 

     void setName(std::string n) { name = n; } 

    private: 
     std::string name;  
}; 

Si tratta di una definizione di classe per una persona. Non è una variabile. Non puoi chiamare setName su di esso perché non esiste ancora. Ma quando si fa:

int main() 
{ 
    Person p, q; 
    p.setName("Jill Bloggs"); 
    q.setName("Bob King"); 
    std::cout << p.getName() << " " << q.getName() << std::endl; 
} 

si è creato due casi di persone che è possibile assegnare a, cambiamento, e l'uso - sono variabili chiamate istanze.

Non ho idea di cosa significhi "modulo dati", ignoralo.

Per quanto riguarda la dichiarazione, la dichiarazione dichiara che sarà presente un'istanza di qualcosa. Ad esempio, se si vuole creare una classe, e il file di intestazione aveva:

class foo 
{ 
    public: 

     foo(int value); 

     void bar(); 

    private: 
     int x; 
}; 

si dichiara che si dispone di una funzione denominata barra che restituisce void e che si dispone di un intero chiamato x.

Nessuna memoria è allocata per la variabile, x, e nessuna definizione è fornita o bar, quindi sono solo dichiarazioni. Il file di origine probabilmente fornire definizione per bar come:

void foo::bar() 
{ 
    //some code 
} 

e definiton costruttore per foo che inizializza x con un valore e controllare come è stato creato (con una lista di inizializzazione):

foo::foo(int value) : x(value) 
{ 
    //some code 
} 
+0

Haha grazie mille per aver dedicato del tempo per spiegare! – Ayfiaru

+1

Nessun problema. Diventa più facile - scoprirai che puoi riscrivere il tuo progetto finale del college del 2 ° anno che impiega 3 mesi in 15 minuti nel tuo ultimo anno :) (supponendo che tu sia al college, haha). –

+0

Impressionante, grazie;) – Ayfiaru

Problemi correlati