Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: Costruttore e Attributi | Costruttori e Distruttori
OOP in C++

bookSfida: Costruttore e Attributi

Uno degli utilizzi principali dei costruttori è inizializzare gli attributi della classe. Un costruttore di default, ad esempio, può essere utilizzato per impostare valori iniziali. Ad esempio:

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> class Person { public: Person() { name = "undefined"; } std::string name; }; int main() { Person person; std::cout << person.name; }

Se non si specifica un valore per l'attributo name dell'oggetto, verrà impostato su underfined come valore predefinito. È possibile provare a rimuovere questo costruttore per osservare le modifiche che si verificano.

Inizializzazione degli attributi con il costruttore

Come le funzioni, i costruttori possono accettare parametri, consentendo argomenti diversi durante la creazione dell'oggetto. È inoltre possibile sovraccaricarli per gestire un numero variabile di argomenti.

main.cpp

main.cpp

copy
123456789101112131415161718
class Person { public: Person(std::string _name, std::string _surname, int _age) { name = _name; surname = _surname; age = _age; } std::string name; std::string surname; int age; }; int main() { Person person("Bob", "Song", 23); }
Compito

Swipe to start coding

Immagina di dover costruire un semplice sistema di mappatura. Devi creare una classe Location che rappresenta un punto su una mappa con un nome e delle coordinate. Il tuo compito è implementare un costruttore e un metodo per calcolare la distanza da un'altra posizione.

  1. Implementazione di un costruttore che inizializza tutti e tre i campi:
    • Il costruttore deve accettare tre parametri: una std::string per il nome e due valori double per le coordinate x e y.
    • All'interno del costruttore, assegna il parametro del nome al campo name dell'oggetto.
    • Assegna il parametro della coordinata x al campo x dell'oggetto.
    • Assegna il parametro della coordinata y al campo y dell'oggetto.
  2. Implementazione di un metodo distanceTo che accetta un altro oggetto Location come parametro:
    • Accedi alle coordinate x e y sia dell'oggetto corrente sia dell'altro oggetto.
    • Calcola la differenza tra le coordinate x: other.x - x.
    • Calcola la differenza tra le coordinate y: other.y - y.
    • Calcola la distanza utilizzando la formula: sqrt(dx * dx + dy * dy).
    • Restituisci la distanza calcolata come un valore double.

Esempio

Location("Home", 0.0, 0.0) and Location("Office", 3.0, 4.0) -> 5.0
Location("Park", 1.0, 2.0) and Location("School", 4.0, 6.0) -> 5.0
Location("Cafe", -1.0, -1.0) and Location("Library", 2.0, 3.0) -> 5.0

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 2
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

close

bookSfida: Costruttore e Attributi

Scorri per mostrare il menu

Uno degli utilizzi principali dei costruttori è inizializzare gli attributi della classe. Un costruttore di default, ad esempio, può essere utilizzato per impostare valori iniziali. Ad esempio:

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> class Person { public: Person() { name = "undefined"; } std::string name; }; int main() { Person person; std::cout << person.name; }

Se non si specifica un valore per l'attributo name dell'oggetto, verrà impostato su underfined come valore predefinito. È possibile provare a rimuovere questo costruttore per osservare le modifiche che si verificano.

Inizializzazione degli attributi con il costruttore

Come le funzioni, i costruttori possono accettare parametri, consentendo argomenti diversi durante la creazione dell'oggetto. È inoltre possibile sovraccaricarli per gestire un numero variabile di argomenti.

main.cpp

main.cpp

copy
123456789101112131415161718
class Person { public: Person(std::string _name, std::string _surname, int _age) { name = _name; surname = _surname; age = _age; } std::string name; std::string surname; int age; }; int main() { Person person("Bob", "Song", 23); }
Compito

Swipe to start coding

Immagina di dover costruire un semplice sistema di mappatura. Devi creare una classe Location che rappresenta un punto su una mappa con un nome e delle coordinate. Il tuo compito è implementare un costruttore e un metodo per calcolare la distanza da un'altra posizione.

  1. Implementazione di un costruttore che inizializza tutti e tre i campi:
    • Il costruttore deve accettare tre parametri: una std::string per il nome e due valori double per le coordinate x e y.
    • All'interno del costruttore, assegna il parametro del nome al campo name dell'oggetto.
    • Assegna il parametro della coordinata x al campo x dell'oggetto.
    • Assegna il parametro della coordinata y al campo y dell'oggetto.
  2. Implementazione di un metodo distanceTo che accetta un altro oggetto Location come parametro:
    • Accedi alle coordinate x e y sia dell'oggetto corrente sia dell'altro oggetto.
    • Calcola la differenza tra le coordinate x: other.x - x.
    • Calcola la differenza tra le coordinate y: other.y - y.
    • Calcola la distanza utilizzando la formula: sqrt(dx * dx + dy * dy).
    • Restituisci la distanza calcolata come un valore double.

Esempio

Location("Home", 0.0, 0.0) and Location("Office", 3.0, 4.0) -> 5.0
Location("Park", 1.0, 2.0) and Location("School", 4.0, 6.0) -> 5.0
Location("Cafe", -1.0, -1.0) and Location("Library", 2.0, 3.0) -> 5.0

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 2
single

single

some-alt