2012-05-24 12 views
5

Estoy leyendo un libro, la guía Primer para C++.¿Son estos términos de C++ correctos?

Creo que entendí el truco hasta cierto punto, solo quiero aclarar algunas cosas.

  1. Se dice que un class es como un tipo de datos (Un tipo de datos siendo int, char, etc ..) y que un Object/Instancia es como una variable. ¿Es esto cierto?

  2. ¿Qué es un formulario de datos?

  3. ¿Qué parte de una declaración es la declaración? ¿Es el data type + the variable, y el = es la tarea?

+4

¿Por qué tantos downvotes? – TeaOverflow

+0

No lo sé; Pensé que las preguntas serían simples de responder y me tomé el tiempo para escribir las preguntas para que pudieran ser devueltas de manera eficiente. – Ayfiaru

+2

Creo que es un poco duro. Si ya está leyendo un libro y está confundido, son preguntas válidas. –

Respuesta

5

No del todo.

Una clase es "como un tipo de datos" en el sentido de que es una plantilla para la creación de un objeto, pero no es un objeto que puede usar.

Cuando utiliza esa plantilla para crear una instancia de un objeto, puede hacer uso de ese objeto. Puede crear tantas instancias como desee; puede pensar en esas instancias como variables.

Por ejemplo:

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

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

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

    private: 
     std::string name;  
}; 

Esta es una definición de clase para una persona. No es una variable. No puede llamar a setName porque aún no existe. Pero cuando lo hace:

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

Se crearon dos casos de personas que se pueden asignar a, el cambio, y el uso - que son variables denominadas casos.

No tengo idea de qué significa "forma de datos", ignórelo.

En cuanto a la declaración, la declaración indica que una instancia de algo estará presente. Por ejemplo, si estuviera creando una clase, y el archivo de cabecera tenía:

class foo 
{ 
    public: 

     foo(int value); 

     void bar(); 

    private: 
     int x; 
}; 

Usted está declarando que tiene un bar llamado función que devuelve void y que tiene un entero llamado x.

No se asigna memoria para la variable, x, y no se proporciona ninguna definición o barra, por lo que son solo declaraciones. El archivo de origen probablemente proporcionar la definición del bar como:

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

y una definiton constructor para foo que inicializar x con un valor y controlar cómo se creó (con una lista de inicialización):

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

Jaja muchas gracias por tomarse el tiempo para explicar! – Ayfiaru

+1

No hay problema. Se vuelve más fácil: encontrarás que puedes reescribir tu proyecto final de segundo año de universidad que tomó 3 meses en 15 minutos en tu último año (suponiendo que estés en la universidad, jaja). –

+0

Impresionante, gracias;) – Ayfiaru

Cuestiones relacionadas