これが悪い形式であり、宣言でデフォルト値を指定する必要があることは承知していますが、少しの間私を甘やかしていただければ..なぜこれはコンパイルされるのですか? そして、正確に何が起こっているのですか?
#include <iostream>
using namespace std;
class test
{
public:
test(int n);
};
test::test(int n = 666)
{
cout << n;
}
int main()
{
test t;
cin.sync();
cin.ignore();
return 0;
}
出力: 666
.. テンプレートは同じコードにどのように影響しますか?
template <class T>
class test
{
public:
test(int n);
};
template <class T>
test<T>::test(int n = 666)
{
cout << n;
}
int main()
{
test<int> t;
cin.sync();
cin.ignore();
return 0;
}
エラー:適切なデフォルト コンストラクタがありません
お時間をいただきありがとうございます!