Do rzeczy. Prosty kod niemal żywcem zerżnięty z kursu c++.
Kod:
#include <iostream>
#include <string>
using namespace std;
class Klasa
{
public:
string nazwa;
Klasa(int zmienna1, int zmienna2 );
};
Klasa::Klasa(int zmienna1, int zmienna2 )
{
cout << "Konstruktor działa!" << endl;
cout << endl;
}
int main()
{
int zmienna1, zmienna2;
Klasa( zmienna1, zmienna2 );
}
Mimo, że ten kod nic nie robi poza informowaniem o działającym konstruktorze, to kompiluje się i działa. Jednak identyczny kod różniący się jedynie ilością argumentów w konstruktorze już nie:
Kod:
#include <iostream>
#include <string>
using namespace std;
class Klasa
{
public:
string nazwa;
Klasa(int zmienna1 );
};
Klasa::Klasa(int zmienna1 )
{
cout << "Konstruktor działa!" << endl;
cout << endl;
}
int main()
{
int zmienna;
Klasa( zmienna );
}
Kompletnie nie rozumiem, dlaczego ten sam konstruktor o dwóch argumentach wywołuje się i działa, zaś w przypadku wywołania konstruktora z jednym argumentem pojawia się konflikt deklaracji.