AnyCompiler

Structs e Classes

Um struct agrupa valores relacionados sob um tipo nomeado, com seus membros acessíveis diretamente pelo nome.

#include <iostream>
#include <string>
using namespace std;

struct Person {
    string name;
    int age;
};

int main() {
    Person alice;
    alice.name = "Alice";
    alice.age = 30;
    cout << alice.name << " is " << alice.age << " years old" << endl;
    return 0;
}
Output
Alice is 30 years old

class e constructors

class é idêntica a struct em todos os aspectos exceto um: os membros de um struct são public por padrão, os de uma class são private por padrão. Um constructor é uma function membro especial, nomeada igual à class, que roda automaticamente sempre que uma instância é criada — é o lugar natural para configurar o estado inicial de um novo object.

#include <iostream>
#include <string>
using namespace std;

class Person {
public:
    string name;
    int age;

    Person(string n, int a) {
        name = n;
        age = a;
    }
};

int main() {
    Person bob("Bob", 25);
    cout << bob.name << " is " << bob.age << " years old" << endl;
    return 0;
}
Output
Bob is 25 years old

A seguir: constructors e RAII — a única ideia que substitui um coletor de lixo no C++ idiomático.

Practice exercise

Defina um struct Book com os fields title (string) e price (double). Crie um Book com title "Dune" e price 15.0, depois imprima "<title> costs <price>".