Comprensión de clases y objetos de C ++ (2)

En la sección anterior, hablamos sobre el concepto de clases y objetos, pero relacionado con la inicialización de clases.
La inicialización de una clase en realidad se refiere a la asignación de miembros de la clase.

1. Varios métodos de asignación de miembros de la clase

1. Inicialización directa

En la estructura de la clase, hay una premisa para inicializar directamente los miembros: la premisa es que todos los miembros de datos son públicos y no se declara ningún constructor.
Algunas personas pueden querer preguntar por qué no se puede declarar el constructor, específicamente, podemos verificarlo a través del código.

El miembro de datos se define como público y el constructor se declara; el bloque de código no tiene un mensaje de error y se informa del error de compilación.
#include<iostream>
using namespace std;
class  CA
{
    
    
public:
	 CA();//代码块,无错误提示,编译报错。
	~ CA();
public:
	int m_num;

};


int main()
{
    
    
	CA ca;
	ca.m_num = 1;//直接初始化
	return 0;
}

resultado de la operación:
Inserte la descripción de la imagen aquí

El miembro de datos se define como público y no hay ningún constructor; el bloque de código no tiene un mensaje de error y la compilación es exitosa.
#include<iostream>
using namespace std;
class  CA
{
    
    
public:
	//成员函数;
public:
	int m_num;

};


int main()
{
    
    
	CA ca;
	ca.m_num = 1;//直接初始化
	return 0;
}

resultado de la operación:
Inserte la descripción de la imagen aquí

Nota: Pero generalmente no recomendamos inicializar los miembros de datos directamente en la estructura de la clase, más es inicializar a través del constructor, la función de miembro público y la lista de inicialización de miembros.

2. Inicialización del constructor

#include<iostream>
using namespace std;
class CA
{
    
    
public:
//构造函数
	CA(int a)
	{
    
    
		this->m_num = a;
	}
//实现了构造函数后,一定要记得实现析构函数,否则报错
	~CA()
	{
    
    

	}
//公有的函数-验证是否成功初始化
	int Getnum()
	{
    
    
		return this->m_num;
	}
private:
	int m_num;

};

//程序入口
int main()
{
    
    
	CA ca(1);//创建时,在类对象后加括号,括号里面加实参即可实现构造函数初始化
	cout << ca.Getnum() << endl;
	return 0;
}

resultado de la operación:
Inserte la descripción de la imagen aquí
Nota: Después de implementar el constructor, debe recordar implementar el destructor, de lo contrario se informará un error. La lógica del destructor puede estar vacía, pero no solo una declaración

3. Inicialización de la lista de inicialización de miembros

#include<iostream>
using namespace std;
class CA
{
    
    
public:
	//第一种:成员初始化列表进行初始化
	CA() :m_num(1)
	{
    
    }
	//第二种:成员初始化列表进行初始化
	CA(int a) :m_num(a)
	{
    
    

	}
	~CA()
	{
    
    

	}
	int Getnum()
	{
    
    
		return this->m_num;
	}
private:
	int m_num;

};


int main()
{
    
    
	CA ca;
	cout << ca.Getnum() << endl;
	CA ca1(6);
	cout << ca1.Getnum() << endl;
	return 0;
}

resultado de la operación:
Inserte la descripción de la imagen aquí

4. Inicialización de la función pública

#include<iostream>
using namespace std;
class CA
{
    
    
public:
	CA()
	{
    
    

	}
	~CA()
	{
    
    

	}
	//通过公有的成员函数来对成员进行初始化
	void Setnum(int a)
	{
    
    
		this->m_num = a;
	}
	//获取成员的值并返回--验证是否成功进行初始化
	int Getnum()
	{
    
    
		return this->m_num;
	}
private:
	int m_num;

};


int main()
{
    
    
	CA ca;
	ca.Setnum(8);//类对象调用公有成员函数,对成员进行初始化
	cout << ca.Getnum() << endl;//类对象调用Get方法,验证是否进行初始化
	return 0;
}

resultado de la operación:
Inserte la descripción de la imagen aquí

En cuanto al aprendizaje de C ++, invitamos a todos a seguirme, comentar mis artículos, me gusta, marcar como favorito, seguirme para no perderse. Los internautas también pueden hablar conmigo sobre productos secos de C ++. El conocimiento de C ++ es mucho más que eso, lo analizaremos y explicaremos uno a uno. Si los internautas quieren que les explique, pueden comentar y dejar un mensaje, y haré todo lo posible para explicárselo a todos.

: : ProMer_Wang

Enlace: https://blog.csdn.net/qq_43801020/article/details/106880711

Este artículo es el artículo original de ProMer_Wang, los derechos de autor pertenecen al autor, indique la fuente del texto original para la reimpresión, ¡bienvenido a reimprimir!

Supongo que te gusta

Origin blog.csdn.net/qq_43801020/article/details/106880711
Recomendado
Clasificación