构造函数的分类:
(按照参数分类)无参构造和有参构造
(按照构造方法分类)普通构造和拷贝构造
构造函数的调用:
括号法
显示法
隐式转换法
#include<iostream>
#include<cstdio>
using namespace std;
class T{
public:
int a;
public:
// 无参构造函数
T(){
a = 1;
cout<<a<<"这是无参构造函数"<<endl;
}
// 有参构造函数
T(int s){
a = s;
cout<<a<<"这是有参构造函数"<<endl;
}
// 拷贝构造函数
T(const T &other){
a = other.a;
cout<<a<<"这是拷贝构造函数"<<endl;
}
~T(){
cout<<a<<"这是析构函数"<<endl;
}
};
void f(){
// 括号法调用
T t1;
cout<<"-----------"<<endl;
T t2(10);
cout<<"-----------"<<endl;
T t3(t2);
cout<<"-----------"<<endl;
t2.a = 11;
cout<<t3.a<<endl; // 不会修改 t3 的值
printf("%p %p\n", &t2, &t3);
cout<<"-----------"<<endl;
// 显示法调用
T t4;
T t5 = T(12);
T t6 = T(t5);
cout<<"-----------"<<endl;
// 隐式转换法调用
T t7 = 13; // 相当于将此行代码隐式转换成了 T t7 = T(10);
T t8 = t7; // 相当于将此行代码隐式转换成了 T t8 = T(t7);
cout<<"-----------"<<endl;
}
int main()
{
f();
return 0;
}