Ⅰ Clase y objeto ②

2.3 Constructor de copia

2.3.1 Función

Asignar los datos del objeto anterior al nuevo objeto.

La función de copia (parámetro formal) es una referencia al objeto de esta clase &

2.3.1 ¿Cuándo se usa?

 

 

 

2.4 Copia superficial y copia profunda

 

Si modifica el contenido de s, scopy también cambiará en consecuencia ¿Cuál es la diferencia entre copiado y no copiado? .

Motivo: los dos punteros se refieren al mismo lugar, el área de memoria no cambia (s = sObj.s;)

 

 Los dos se refieren a diferentes lugares, sy nuevos caracteres tienen un nuevo lugar, no cambiará con el cambio de s

Ejemplo 1: círculo de diseño

 

#include <iostream>
 usando el  espacio de nombres estándar; 

flotador constante  PI = 3.1416 ; clase CCircle 
{ float x, y; 
    unsigned long clr;
    flotador r;
public : 
    CCircle ( float _x = 0 , float _y = 0 , float _r = 0 , unsigned long _clr = 0x00FF00 ): x (_x), y (_y), clr (_clr), r (_r) 
    {                         // 构造 函数, 默认 初始化 ,    }
     doble


    
GetArea () 
    { 
        return PI * r * r; 
    } 
    doble GetPerimeter () 
    { 
        return  2 * PI * r; 
    }
     movimiento vacío ( float dx, float dy) 
    { 
        x + = dx; 
        y + = dy; 
    }
     Escala vacía ( flotante s) 
    { 
        r = s * r; 
    } 
    void Draw () 
    { 
        cout << " Círculo: " << x <<" , " << y << " , " << r << endl; 
    } 
}; 

int main () 
{ 
    CCircle myCircle ( 300.0f , 400.0f , 1.5f , 0xFF0000 ); 

    myCircle.Move ( 3.0f , 4.0f ); 
    myCircle.Scale ( 2.0f ); 

    myCircle.Draw (); 

    cout << myCircle.GetPerimeter () << " , " << myCircle.GetArea () << endl; 

    devuelve  0 ; 
}

 

#include <iostream> 
#include <graph2d.h>    // Escrito por el profesor, es sorprendente, hay algunos que 
usan el  espacio de nombres std; que
 usan el  gráfico de espacio de nombres ;   // emmm así. . 

clase CCircle 
{ 
    float x, y; 
    unsigned long clr;
     float r;
 public : 
    CCircle ( float _x = 0 , float _y = 0 , float _r = 0 , unsigned long _clr = 0x00FF00 ): x (_x), y (_y) , clr (_clr), r (_r)
    { 
    } 
    doble 
        setColor (clr);GetArea () 
    { 
        return PI * r * r; 
    } 
    doble GetPerimeter () 
    { 
        return  2 * PI * r; 
    }
     movimiento vacío ( float dx, float dy) 
    { 
        x + = dx; 
        y + = dy; 
    }
     Escala vacía ( flotante s) 
    { 
        r = s * r; 
    } 
    void Draw () 
    { 
        fillCircle (x, y, r); 
    } 
}; 

CCircle myCircle (300 , 400 , 50.5f , 0xFF00FF );  // 布吉岛 啥 意思

void display () 
{ 
    myCircle.Draw (); 
}

 teclado vacío ( tecla char sin signo ) 
{ 
    switch (tecla) 
    { 
    case  ' w ' : 
        myCircle.Move ( 0 , 5 );
        romper ;
    case  ' s ' : 
        myCircle.Move (0 , - 5 );
        romper ;
    caso  ' a ' : 
        myCircle.Move ( - 5 , 0 );
        romper ;
    caso  ' d ' : 
        myCircle.Move ( 5 , 0 );
        romper ;
    caso  ' z ' : 
        myCircle.Scale ( 1.05 );
        romper ;
    case  ' x ' : 
        myCircle.Scale ( 0.95 );
        romper ; 
    } 
} 

int main () 
{ 
    myCircle.Move ( 3.0f , 4.0f ); 
    myCircle.Scale ( 2.0f ); 

    cout << myCircle.GetPerimeter () << " , " << myCircle.GetArea () << endl; 
    initGraph (pantalla, teclado); 
    devuelve  0 ; 
}

 

 

 

 ## 1. Estructura y función

 

 ## Segundo, sistema de coordenadas y nombres de funciones

La nomenclatura de funciones utiliza la nomenclatura de estilo camel, es decir, cuando el nombre de la función está conectado por una o más palabras, la primera palabra comienza con una
letra minúscula, y la primera letra de la siguiente palabra está en mayúscula, como se muestra en la función showCoordinate del sistema de coordenadas de la pantalla anterior.

El sistema de coordenadas es normal, el origen está en la esquina inferior izquierda

Presione Esc para salir de la interfaz, presione F1 para mostrar la información de ayuda, presione F2 para mostrar el sistema de coordenadas, presione 'q' para
cambiar entre la ventana y la pantalla completa

## 3. Mecanismo de operación

Función de devolución de llamada:

El puntero de la función 1 se pasa como parámetro a la función 2, y la función 1 se controla manipulando la función 2

El usuario no llama directamente, pero cuando ocurre un evento o condición específica (como presionar un teclado, hacer clic con el mouse, etc.), el
sistema operativo llama y envía un mensaje a la función para responder al evento o condición.

 

Supongo que te gusta

Origin www.cnblogs.com/syzyaa/p/12690894.html
Recomendado
Clasificación