CPP学习之——调用构造函数进行类型转换(10.11)

一 概述

我们可以把数字当作对象赋给另一个对象,这样在堆赋值表达式进行计算时,首先要对数字进行类型转换,同时判断该类的构造函数的参数是否与数字的类型匹配,假如匹配则调用构造函数创建一个临时对象,跟着将该临时对象赋值操作符左边的对象,最后调用临时析构函数删除临时对象

二 示例及结果输出

2.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
using namespace std;
class A
{
private:
int i;
public:
explicit A(int x)
{
i = x;
cout << "构造函数执行!" << i << endl;
}
~A() {cout << "析构函数执行!" << i << endl;}
void get() {cout << i << endl;}
};
int main()
{
A a(99);
a.get();
//a=1000;
a = A(1000);
return 0;
}

2.2 输出结果

1
2
3
4
5
构造函数执行!99
99
构造函数执行!1000
析构函数执行!1000
析构函数执行!1000

2.3 代码说明

  • a=1000;相当于a=A(1000);调用类A中只有一个int参数的构造函数
  • explicit:构造函数修饰符,使用此关键字后,不能使用a=1000;a=A(1000);可以,严格按照规则匹配