now I am just really new to C++, currently I have a piece of code below:
#include <iostream>
using namespace std;
template<typename T>
class Test1
{
    public:
    Test1():var1(1) {
        cout << "Constructor1" << endl;
    }
    Test1(T a):var1(a) {
        cout << "Constructor2" << endl;
    }
    private:
    int var1;
};
template<typename T>
class Test2
{
    public:
    Test2():var2(x) {
        cout << "Constructor3" << endl;
    };
    private:
    int x;
    Test1<int> var2;
};
int main() 
{
    Test2<int> var3;
    return 0;
}
The output will just be
Constructor2
Constructor3
I wonder why the constructor2 will be called instead of constructor1, since in the class Test2, when creating the object var2, I didn't pass in any parameters, shouldn't the constructor without parameter being called?
Thank you in advance!
 
    