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

[C++11] Tworzenie obiektu z usuniętym konstruktorem domyślnym.

Ostatnio zmodyfikowano 2015-06-04 20:22
Autor Wiadomość
Kaikso
Temat założony przez niniejszego użytkownika
[C++11] Tworzenie obiektu z usuniętym konstruktorem domyślnym.
» 2015-06-04 17:22:46
W jednej klasie usunąłem konstruktor domyślny mniej więcej w taki sposób:

C/C++
class A
{
public:
    A( int a );
    A() = delete;
}

Problem polega na tym że nie rozumiem poniższego zachowania:

C/C++
int main()
{
    A a0; // Błąd: konstruktor domyślny został usunięty
    A a1(); // A to kompiluje się bez problemu
   
    return 0;
}

1) Dlaczego podczas jawnego wywołania konstruktora domyślnego (z użyciem nawiasów) kod się kompiluje mimo jego usunięcia?
2) Jak zablokować taki kod?

Być może błąd jest w moim rozumowaniu ale dla mnie te dwa zapisy się niczym nie różnią.
P-133175
Monika90
» 2015-06-04 18:10:50
C/C++
A a1(); // A to kompiluje się bez problemu
Bo to nie tworzy obiektu, to jest deklaracja bezargumentowej funkcji zwracającej A.
P-133179
Kaikso
Temat założony przez niniejszego użytkownika
» 2015-06-04 20:22:57
Racja wziąłem ten zapis za wywołanie konstruktora bez argumentów tak jak to się robi gdy są argumenty:
C/C++
class A
{
public:
    A( int a );
};

int main()
{
    A a( 10 );
}

W każdym razie dziękuję za pomoc i zamykam temat ;)
P-133187
« 1 »
  Strona 1 z 1