Experimento C ++ --- la primera experiencia de la clase (V)

La primera experiencia de la clase (V)

La descripción
define una clase de datos con un solo atributo de tipo int y los siguientes métodos:

El constructor predeterminado, inicializa la propiedad a 0 y genera "Constructor predeterminado de datos".

Destructor, salida: "El número de datos se borra", donde "#" es el valor del atributo.

int getValue (): obtiene el valor del atributo.

void setValue (int): establece el valor del atributo.

Defina una clase de matriz DataArray compuesta por objetos Data. Esta clase incluye un atributo de tipo int y un atributo de tipo Data *, que son el número de elementos y todos los elementos de la matriz. Defina el siguiente método:

Constructor: consulte el método de llamada de la función principal para conocer el formato del parámetro, salida: "Constructor de DataArray".

int getSum (): encuentra la suma de los valores de atributo de todos los objetos de datos.

Destructor: genera una línea del "deconstructor de DataArray".
Ingrese
varios números enteros. El número es mayor que 2.

La primera N representa el número de elementos que se introducirán posteriormente. Hay N enteros después de eso. Se utilizan para establecer el valor del elemento de matriz de los datos del objeto DataArray en la función principal.

El último número entero se usa para establecer el valor del objeto al que apunta testP en la función principal.

Salida
ver muestra ~
Entrada de muestra

10 1 2 3 4 5 6 7 8 9 10 1222

Salida de muestra

Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
DataArray’s constructor.
Sum is 55
Data’s default constructor.
Data 1222 is erased.
Data 10 is erased.
Data 9 is erased.
Data 8 is erased.
Data 7 is erased.
Data 6 is erased.
Data 5 is erased.
Data 4 is erased.
Data 3 is erased.
Data 2 is erased.
Data 1 is erased.
DataArray’s deconstructor.
Data 0 is erased.

Título dado código

int main()
{
    
    
    int i, n;
    Data test, *testP;
    cin>>n;
    int tmp[n];
    for (i = 0; i < n; i++)
        cin>>tmp[i];
    DataArray datas(n, tmp);
    cout<<"Sum is "<<datas.getSum()<<endl;
    testP = new Data;
    cin>>n;
    testP->setValue(n);
    delete testP;
    return 0;
}

código:

#include<iostream>

using namespace std;

class Data{
    
    
	int data;
public:
	Data(){
    
    
		data=0;
		cout<<"Data’s default constructor."<<endl;
	}
	
	~Data(){
    
    
		cout<<"Data "<<data<<" is erased."<<endl;
	}
	
	int getValue(){
    
    
		return data;
	}
	
	void setValue(int nn){
    
    
		data=nn;
	}
	
};

class DataArray{
    
    
	int len;
	Data *arr;
public:
	DataArray(){
    
    
		len=0;
		arr=NULL;
	}
	
	DataArray(int n,int *a){
    
    
		len=n;
		arr=new Data[len];
		for(int i=0;i<len;i++){
    
    
			arr[i].setValue(a[i]);
		}
		cout<<"DataArray’s constructor."<<endl;
	}
	
	~DataArray(){
    
    
		for(int i=len-1;i>=0;i--){
    
    
			arr[i].~Data();
		}
		cout<<"DataArray’s deconstructor."<<endl;
	}
	
	int getSum(){
    
    
		int sum=0;
		for(int i=0;i<len;i++){
    
    
			sum+=arr[i].getValue(); 
		}
		return sum;
	}
};

int main()
{
    
    
    int i, n;
    Data test, *testP;
    cin>>n;
    int tmp[n];
    for (i = 0; i < n; i++)
        cin>>tmp[i];
    DataArray datas(n, tmp);
    cout<<"Sum is "<<datas.getSum()<<endl;
    testP = new Data;
    cin>>n;
    testP->setValue(n);
    delete testP;
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/timelessx_x/article/details/115263101
Recomendado
Clasificación