En C ++, puede usar clases para definir sus propios tipos de datos, entonces, ¿cómo entender sus propios tipos de datos? Por ejemplo, somos comunes como int, float, char ... y así sucesivamente, que son todos un tipo de datos, luego, por ejemplo, quiero definir un tipo de datos llamado reloj, que contiene horas, minutos, segundos y se puede mostrar, luego podemos usar la clase para definir nuestro propio reloj de tipo de datos.
Definido como sigue
class clock {
public:
void setime(int hour, int minute, int second);
void showtime();
clock(int newh, int newm, int news);//构造函数
clock();//默认构造函数
private:
int hour;
int minute;
int second;
};
clase : la palabra clave de la clase de declaración, la forma básica de la clase de declaración.
clock : nombre de la clase, que significa hora, minuto y segundo.
público, privado: indica los atributos del miembro en la clase, donde público indica que los atributos del miembro de la clase son públicos y se puede acceder fuera de la clase. El formulario de acceso específico es: nombre de la clase. nombre del miembro, donde los miembros de la clase pueden ser ya sea datos o El nombre de la función, por ejemplo, quiero acceder a la función setime en tiempo cuyo tipo de datos es reloj, y el formulario de acceso es time.setime ()
privado: es un miembro privado de la clase, al que no se puede acceder fuera de la clase, pero se puede acceder a él en el miembro.
De hecho, también hay un miembro de atributo protegido, que es similar a privado, pero es ligeramente diferente en algunos aspectos, que se presentará en un artículo posterior.
Constructor : Contiene el constructor predeterminado y el constructor definido por usted mismo. La función del constructor es inicializar los miembros, como los miembros en privado. La forma de construcción es el nombre de la clase (parámetro) y el constructor no puede tener un valor de retorno. Tomando el reloj anterior como ejemplo, la forma del constructor es:
clock(int newh, int newm, int news);//构造函数
clock();//默认构造函数
Definición de función : después de definir los miembros de la función en la clase, la función se puede definir fuera de la clase o dentro de la clase. El método de definición es el tipo de valor de retorno nombre de clase: nombre de la función (parámetro). Tome la función showtime anterior como ejemplo . La forma de definición es
void clock::showtime()
{
cout << "time" << " is " << hour << " : " << minute << " : " << minute << endl;
}
Aquí hay un ejemplo para facilitar la comprensión de la definición de la clase y el rol del constructor. Simplemente defina una clase de reloj e inicialícela de dos maneras diferentes, e imprima los datos inicializados. El código completo es el siguiente
# include <iostream>
# include <string>
# include <vector>
using namespace std;
class clock {
public:
void setime(int hour, int minute, int second);
void showtime();
clock(int newh, int newm, int news);//构造函数
clock();//默认构造函数
private:
int hour;
int minute;
int second;
};
void clock::setime(int newhour, int newminute, int newsecond)
{
hour = newhour;
minute = newminute;
second = newsecond;
}
void clock::showtime()
{
cout << "time" << " is " << hour << " : " << minute << " : " << minute << endl;
}
clock::clock(int newh, int newm, int news):hour(newh),minute(newm),second(news)
{
//初始化列表,对象进行简单的初始化时可以采用此方式,可以优先执行初始化列表从而提高运行的速度
}
clock::clock():hour(0),minute(0),second(0) {
}
int main()
{
/*clock time;*/
//time.setime(16, 41, 35);
//time.showtime();
//默认构造函数
clock time1;
time1.showtime();
//构造函数初始化
clock time2(9, 27, 6);
time2.showtime();
}
La lista de inicialización utilizada anteriormente es en realidad una forma de inicialización rápida, porque la inicialización simple es asignar un valor a la variable correspondiente. Es lo mismo escribir la instrucción de asignación en el cuerpo de la función, y el resultado de la ejecución se muestra en la figura.
Lo anterior es la definición de una clase simple y el uso del constructor.