C++ - 隐式构造

  1. 概述
  2. 隐式构造
  3. explicit 关键字

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 关键字

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

欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qinhan_shu@163.com

文章标题:C++ - 隐式构造

本文作者:QinHan

发布时间:2019-12-28, 18:02:36

最后更新:2020-02-20, 05:42:12

原始链接:https://qinhan.site/2019/12/28/cpp-implicit-conversion/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏