【C++学习笔记 18】C++中的隐式构造函数

server/2024/10/21 13:37:59/

举个例子

#include <iostream>
#include <string>using String = std::string;class Entity{
private:String m_Name;int m_Age;
public:Entity(const String& name):m_Name(name), m_Age(-1) {}Entity(int age) : m_Name("UnKnown"), m_Age(age) {}
};int main()
{Entity a("InfiHeart");Entity b(22);std::cin.get();
}

定义一个类,并写两个简单的构造函数,在主函数中可以用上述方法创建两个实例,也可以用下面的方法创建

int main()
{Entity a = String("InfiHeart");Entity b = 22;std::cin.get();
}

这里直接让字符串和整形的数字等于类,却可以创建成功,这就是隐式转换或隐式构造函数。它隐式的把"InfiHeart"或22转化为Entity对象,因为其中包含接受字符串或整数的构造函数。
另一个例子是

void PrintEntity(const Entity& entity)
{//printing
}int main()
{PrintEntity(22);std::cin.get();
}

如果定义一个传入Entity对象的函数,可以直接调用函数并传入整形参数。
但如果使用PrintEntity("InfiHeart");则会报错,原因是隐式转换只允许发生一次,这里的"InfiHeart"char数组,距离创建Entity对象还需一次转换。

explicit关键字

如果只想用显式的格式创建对象,那么可以在构造函数前面加上explicit关键字,这意味着这个构造函数不会隐式转换。


教程来源:The Cherno C++ 教程


http://www.ppmy.cn/server/100888.html

相关文章

网络安全知识渗透测试

渗透测试是一种模拟网络攻击&#xff0c;用于识别漏洞并制定规避防御措施的策略。及早发现缺陷使安全团队能够修复任何漏洞&#xff0c;从而防止数据泄露&#xff0c;否则可能会造成数十亿美元的损失。笔测试还有助于评估组织的合规性、提高员工对安全协议的认识、评估事件响应…

客户成功:ToB与SaaS企业利润飙升的终极武器!

终于有人把客户成功讲明白了 作者&#xff1a;沈建明 对ToB企业来说&#xff0c;只有客户成功才能带来持久增长&#xff0c;在SaaS企业下行大背景下&#xff0c;客户成功是唯一的救命稻草。大家是不是都听过这样的说法&#xff1f; ToB和SaaS企业的老客户贡献对于企业至关重要…

【Pre-training】Rethinking ImageNet Pre-training

ICCV-2019 He K, Girshick R, Dollr P. Rethinking imagenet pre-training[C]//Proceedings of the IEEE/CVF international conference on computer vision. 2019: 4918-4927. 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method4.1 No…

云计算运维和SRE是一回事儿吗?有什么区别?

作为一名运维&#xff0c;你可能听过这两个词&#xff1a;云计算运维和SRE。有的人把他俩混用&#xff0c;你可能会有点迷惑&#xff0c;云计算运维和SRE是一个东西吗&#xff1f; 今天就来简单讨论一下云计算运维和SRE。 一、什么是云计算运维&#xff1f; 云计算没有专属的…

软件工程造价师习题练习 11

1.如果数据功能由被度量应用维护&#xff0c;则为一个EIF。 错误 正确 如果数据功能由被度量应用维护&#xff0c;则为一个ILF。如果数据功能由被度量应用引用但不维护&#xff0c;且其为其他应用的一个ILF&#xff0c;则为一个 EIF。 答案&#xff1a;错误 2.图书管理系统…

字符串及转义字符

字符串 在c语言中 形如‘a ’b ‘c 等单个字母被命名为字符常量 而形如“abcdef”等则被命名为字符串 在c语言中&#xff0c;有整形&#xff0c;单精度浮点数&#xff0c;字符数据类型 但却没有字符串类型 所以在初始化字符串时与初始化字符相同 列&#xff1a;char c…

Apache Doris 中Compaction问题分析和典型案例

说明 此文档主要说明一些常见compaction问题的排查思路和临时处理手段。这些问题包括 Compaction socre高Compaction失败compaction占用资源多Compaction core 如果问题紧急&#xff0c;可联系社区同学处理 如果阅读中有问题&#xff0c;可以反馈给社区同学。 1 compaction …

【BES2500x系列 -- RTX5操作系统】系统执行流程 -- 应用初始化 -- app_init() --(十二)

&#x1f48c; 所属专栏&#xff1a;【BES2500x系列】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f49…