Termin "Default Constructor" jest oficjalny zarówno w Javie, jak iw C++ i wydaje się, że w obu światach ma on znaczenie. Czy mogę wiedzieć, czy moje zrozumienie jest poprawne i jakie jest właściwe nazewnictwo niektórych powiązanych pojęć?Domyślnie Constructor, Java kontra C++
domyślnego konstruktora w Java oznacza (Nie-Arg) Konstruktor wygenerowany przez kompilator, gdy nie ma konstruktor zdefiniowane dla klasy.
Domyślny konstruktor w C++ oznacza konstruktor, który można wywołać bez argumentów.
Biorąc pod uwagę następujący przykład
Java:
class NoCtorClass {
// No ctor defined, compiler is generating one --------- J-1
}
class NoArgCtorClass {
public NoArgCtorClass() { ... } -------------------------- J-2
}
C++:
class NoCtorClass {
// implicitly NoCtorClass() constructor is provided -------- C-1
}
class DefaultCtorClass {
public:
// Explicitly telling compiler to give the default one
DefaultCtorClass() = default; ---------------------------- C-2
}
class NoArgCtorClass {
public:
NoArgCtorClass(); ----------------------------------------- C-3
}
NoArgCtorClass::NoArgCtorClass() {....}
class NoArgCtor2Class {
public:
NoArgCtor2Class(int i = 0); -------------------------------- C-4
}
NoArgCtor2Class::NoArgCtor2Class (int i = 0) {....}
w Javie, tylko J-1 jest oficjalnie nazywany konstruktor domyślny, podczas gdy J-2 nie jest.
W C++ wszystkie C-1 do C-4 są oficjalnie nazywane konstruktorem domyślnym.
Czy moje rozumowanie jest prawidłowe?
Jeśli tak, kilka pytań w terminologii:
Jaka jest właściwa nazwa w języku Java dla ctor bez argumentu? (tj. J-1 i J2). Zwykle nazywam to konstruktorem No-Arg. (Dla których odpowiada koncepcji default-ctor w C++)
Jaka jest właściwa nazwa w C++ dla ctor generowanego przez kompilator? (tzn. C-1 i C-2 .Przy słowem kluczowym
default
wygląda na to, że powinno być nazywane domyślne, a następnie powinno być nazywane "domyślnym domyślnym konstruktorem" (dla którego odpowiada koncepcji default-ctor w Javie)Podobny do 2, jak powinniśmy zadzwonić kompilator generowane Copy-konstruktor, operator przypisania, i etc? "Default-Copy-Konstruktor"?
[To odwołanie może pomóc] (http://en.cppreference.com/w/cpp/language/default_constructor). Generowany domyślny konstruktor kompilatora jest domyślnym konstruktorem generowanym przez kompilator, nie ma na to prawdziwej nazwy. –
@JoachimPileborg "domyślny konstruktor domyślny". –
Podejrzewam, że 'C++' dostaje swój termin 'default constructor' od sytuacji, gdy twórca obiektu nie może określić argumentów konstruktora (np. Podczas tworzenia tablicy) i dlatego wywoływany jest konstruktor' default' (no arg needed). Nie jest to problemem w 'Java', gdy tablice obiektów zawsze zawierają wskaźniki, a nie same obiekty. – Galik