【C++】构造函数的分类与调用
分类方式
按参数分:
有参构造(默认构造) & 无参构造
按类型分:
普通构造 & 拷贝构造
调用方式
括号法
语法:
1
2
31. 类名 对象名
2. 类名 对象名(参数)
3. 类名 对象名(引用别名)示例:
1
2
3
4
5
6int main() {
Person p1;//默认构造函数调用
Person p2(10);//有参构造函数
Person p3(p2);//拷贝构造函数
return 0;
}运行结果:
注意: 调用默认构造函数时,不要加"()"。因为编译器会认为是函数的声明,不会认为在创建函数1
2
3
4
5
6Person的无参构造函数
Person的有参构造函数
Person的拷贝构造函数
Person的析构函数
Person的析构函数
Person的析构函数
显示法
语法:
1
2
31. 类名 对象名;
2. 类名 对象名 = 类名(参数);
3. 类名 对象名 = (引用别名);示例:
1
2
3
4
5
6int main() {
Person p1;//默认构造函数调用
Person p2 = Person(10);//有参构造函数
Person p3 = Person(p2);//拷贝构造函数
return 0;
}运行结果:
注意: 不要用拷贝构造函数,初始化匿名对象,编译器会认为Person (p3)等价于Person p3;(在显示法调用示例中)1
2
3
4
5
6Person的无参构造函数
Person的有参构造函数
Person的拷贝构造函数
Person的析构函数
Person的析构函数
Person的析构函数
隐式转换法
语法
1
21. 类名 对象名 = 参数;
2. 类名 对象名 = 引用别名;示例:
1
2
3
4
5int main() {
Person p1 = 10;//有参构造函数
Person p2 = p1;//拷贝构造函数
return 0;
}运行结果
解释: 隐式转换法实例中 "Person p1 = 10;"相当于"Person p1 = Person (10);"1
2
3
4Person的有参构造函数
Person的拷贝构造函数
Person的析构函数
Person的析构函数
1 | class Person { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 氷羽藍汐!