|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 ~May~ 于 2025-2-23 11:09 编辑
#include <iostream>
using namespace std;
// 构造函数的定义:
// 1、构造函数没有返回值类型,不能写,连void都不能写
// 2、构造函数的名字必须与类名相同
// 3、构造函数可以通过不同的参数,来实现重载(Overlord)
// explicit:
// 是用来修饰构造函数的,写在构造函数之前。表示无法通过隐式调用来访问这个构造函数
// 注意事项:
// 1、如果我们没有在一个类中写任何的构造函数,系统会为其添加一个public权限的无参构造函数,可以让我们创建对象
// 2、如果我们给一个类写了构造函数,此时系统不会再提供任何默认的构造函数
// 如果我们为了一个类写了有参的构造函数,一般会同时写无参的构造函数
class Person {
public:
Person() {
cout << "Person类的无参构造函数执行了" << endl;
}
explicit Person(int age) {
cout << "Person类的有参构造函数执行了" << endl;
}
Person(int age,int score) {
cout << "Person(int,int)构造函数执行了" << endl;
}
};
int main() {
// 构造函数的调用:创建对象的时候调用的
// 1.显示调用
Person xiaoming = Person();
// Person xiaoming = Person(10);
// Person xiaoming = Person(10, 20);
// Person xiaoming;//如果使用缩写的方式来调用无参的构造函数,创建对象,不能写小括号,否则系统将会认定为是在定义函数
// Person xiaoming(10);
// Person xiaoming(10, 20);
// 2.隐式调用,不需要我们自己写Person(),直接将所有的参数写道一对大括号中,此时系统会根据大括号中的实参类型与数量去匹配对应的构造函数
// Person xiaoming = {};
// Person xiaoming = 10;//大括号中若只有一个参数,可以省略大括号 // 添加了explicit关键字后,无法隐式调用
// Person xiaoming = { 10,20 };
// 如果使用new的方式进行创建对象,调用的是无参的构造函数可以不写小括号
// 使用new的方法,在堆上创建对象,这个过程称为实例化
// Person* xiaoming = new Person;
return 0;
} |
|