C++构造函数用法

#include <iostream>
using namespace std;

class ClassA
{
public:
ClassA()
{
cout << "ClassA()" << endl;
}
};

template<typename T>
class ClassB
{
public:
ClassB(T* para)
{
cout << "ClassB(T* para)" << endl;
}

ClassB(T& para)
{
cout << "ClassB(T& para)" << endl;
}
};

void printStars()
{
cout << "******************************" << endl;
}

int main(int argc, char** argv)
{
cout << "!!!Hello World!!!" << endl;

printStars();
ClassA* A1 = new ClassA();
ClassB<ClassA> B1(A1);

printStars();
ClassB<ClassA> B2 = new ClassA();  //这条语句形式上是赋值语句,但是实际上会调用ClassB的构造函数

printStars();
ClassA A3;
ClassB<ClassA> B3 = A3;  //这条语句形式上是赋值语句,但是实际上会调用ClassB的构造函数


printStars();
ClassA* A4 = new ClassA();  //针对前面的测试,对于没有任何参数的类的构造函数,此时有没有括号都一样
ClassA* A5 = new ClassA;

printStars();

return 0;

}


程序的执行结果:


!!!Hello World!!!
******************************
ClassA()
ClassB(T* para)
******************************
ClassA()
ClassB(T* para)

******************************
ClassA()
ClassB(T& para)

******************************
ClassA()
ClassA()

******************************


你可能感兴趣的:(C++构造函数用法)