Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zablokowanie konstruktora domyślnego

Ostatnio zmodyfikowano 2016-04-11 18:27
Autor Wiadomość
fokusx
Temat założony przez niniejszego użytkownika
Zablokowanie konstruktora domyślnego
» 2016-04-09 14:02:47
W jaki sposób zablokować użycie konstruktora domyślnego w klasie?
P-147097
Gibas11
» 2016-04-09 14:31:13
Możesz zadeklarować go jako prywatny, ale nie do końca wiem o co Ci chodzi.
P-147103
pekfos
» 2016-04-09 14:42:42
P-147104
carlosmay
» 2016-04-09 17:24:58
Zwykle deklaracja konstruktora parametrycznego, bez konstruktora domyślnego uniemożliwia utworzenie
obiektu konstruktorem domyślnym.
Nie wiem jak inne środowiska, ale C::B i VS tego pilnują.
P-147114
Gibas11
» 2016-04-09 18:45:27
@Up Zgodnie ze standardem C++ (tą stronę można uznać za wyznacznik aktualnego standardu - http://en.cppreference.com/w​/cpp/language​/default_constructor?) kompilator nie powinien tego robić, więc to raczej uniwersalne.
P-147118
mokrowski
» 2016-04-11 18:27:12
Tak jak pisał @carlosmay, tworzenie konstruktora parametrycznego i brak definicji domyślnego (bez parametrów), powoduje że kompilator nie tworzy konstruktora domyślnego.
Tak samo jest z kopiującym.

Brak konstruktora jakiegokolwiek powoduje że kompilator tworzy konstruktor domyślny (oraz domyślny kopiujący).

Oprócz tego, działa jeszcze (tu trochę na wyrost) składania z C++11:
C/C++
#include <iostream>

class X {
public:
    // Jawne usunięcie konstruktora domyślnego
    X() = delete;
    static void info() {
        std::cout << "X::info()" << std::endl;
    }
};

int main() {
    //auto x = X(); // Błąd bo konstruktor domyślny jawnie usunięty
    X::info(); // ok bo statyczna metoda
}
P-147190
« 1 »
  Strona 1 z 1