C++ - 隐式构造

C++ 学习笔记
C++ 隐式构造 & explicit 关键字

概述

  • 主要讲的是类的另外一种定义方法

隐式构造

  • 主要用于简化代码
  • 个人觉得还是少用,这儿就当记录一下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <string>
#include <iostream>

class Entity
{
private:
std::string name;
int age;
public:
Entity(const std::string& n)
: name(n), age(-1) {}

Entity(int age)
: name("Unknown"), age(age) {}

const std::string& GetName() const
{
return name;
}

int GetAge() const
{
return age;
}
};

void PrintEntity(const Entity& e)
{
std::cout << e.GetName() << std::endl;
std::cout << e.GetAge() << std::endl;
}

// 程序的主函数
int main()
{
// 这儿其实是调用 Entity 的构造函数了
PrintEntity(2);
// 上面的语句等价于下面这一句
PrintEntity(Entity(2));

Entity a("qinhan");
Entity aa = std::string("qinhan");

Entity b(22);
Entity b1 = 22;

return 0;
}

explicit 关键字

  • 关键字放在 构造函数 的前面
  • 表示改构造函数不可以用于 隐式构造