#include<iostream>
using namespace std;
class Person
{
int age;
public:
Person(int m)
{
age=m;
cout<<"mark1: "<<m<<endl;
}
~Person()
{
cout<<"mark2: "<<age<<endl;
}
};
int main() {
int age1, age2;
cin >> age1 >> age2; // 从用户处接收两个整数输入
Person p1(age1), p2(age2); // 根据输入的年龄值创建两个Person对象
return 0;
}
输出结果:
mark1: 18
mark1: 19
mark2: 19
mark2: 18
通过这个函数来说明构造函数和析构函数
1.都没有返回值
2.构造函数可以有多个.但析构函数只有一个
3.构造函数用来初始化对象
4.析构函数在对象p1,p2离开其作用域的时候,析构函数被调用,因此先输出两个mark1,后输出两个mark2,但析构函数创建顺序可能与构造函数相反,所以先19.后18
在C++中,构造函数后面打括号的形式通常用于直接初始化对象。这种初始化方式在以下情况下特别有用或必要:
- 常量成员变量初始化:对于常量成员变量(
const
),它们只能在构造函数初始化列表中赋值,不能在构造函数体内部赋值。
cpp复制代码
class MyClass { | |
public: | |
const int myConst; | |
MyClass(int value) : myConst(value) {} // 必须在初始化列表中初始化 | |
}; |
- 引用成员变量初始化:引用成员变量(
reference
)也必须在构造函数的初始化列表中初始化,因为它们必须在构造对象时就绑定到一个有效的对象上。
cpp复制代码
class MyClass { | |
public: | |
int& myRef; | |
MyClass(int& value) : myRef(value) {} // 必须在初始化列表中初始化 | |
}; |