首页 > 其他分享 >17.explicit关键字

17.explicit关键字

时间:2022-09-20 20:44:57浏览次数:57  
标签:17 int explicit 隐式 关键字 参数 Maker 构造函数

c++提供了关键字explicit,禁止通过构造函数进行的隐式转换。声明为explicit的构造函数不能在隐式转换中使用。

[explicit注意]

● explicit用于修饰构造函数,防止隐式转化。

● 是针对单参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造)而言。

class MyString{
public:
	explicit MyString(int n){
		cout << "MyString(int n)!" << endl;
	}
	MyString(const char* str){
		cout << "MyString(const char* str)" << endl;
	}
};

int main(){

	//给字符串赋值?还是初始化?
	//MyString str1 = 1; 
	MyString str2(10);

	//寓意非常明确,给字符串赋值
	MyString str3 = "abcd";
	MyString str4("abcd");

	return EXIT_SUCCESS;
}

错误:

//2022年9月20日20:23:11
#include <iostream>
using namespace std;

class Maker
{
public:
    //explicit只能放在构造函数前面,构造函数只有一个参数或其他参数有默认值时
    explicit Maker(int n)//防止编译器优化Maker m = 10;这种格式
    {

    }
};
int main()
{
    Maker m = 10;
    system("pause");
    return EXIT_SUCCESS;
}

标签:17,int,explicit,隐式,关键字,参数,Maker,构造函数
From: https://www.cnblogs.com/codemagiciant/p/16712464.html

相关文章

  • coco2017 Dataset EDA
    Github仓库:gy-7/coco_EDA(github.com)对coco数据集的分析,近期忙着写论文,空余时间很少能写博文了。EDA的代码放在结尾了,Github仓库里也有。仓库里还有其他的一些EDA分析,......
  • 【题解】CF1733E - Conveyor
    因为每秒只放一个球,所以对于每一个\(x+y=a\)的对角线最多只有一个球且任意两个球不会相遇,所以我们只用知道第\(t-x-y\)秒放的球的移动路径即可。等价于需要求出前\(......
  • 【Java基础】关键字:static
    1.static说明我们希望某些数据在内存空间中只有一份,比如Chinese类,每个对象都共享countryName这个变量,而不用在每个实例变量中单独放一个countryName的变量。那么就可以用s......
  • static关键字简析
    首先是惯例的美图时间+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+——+—......
  • 2022 ICPC 网络预选赛(9.17)
    L给出一个s和t求s一个最长子串使得s中不存在t中长度大于2的子串。直接的想法是状压dp不过复杂度很高。仔细考虑当前形成子串中若包含t的一个字符所形成的的限制是该字......
  • Java的 static关键字
    通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法   声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法。 · 它们只......
  • cf1722C
    example:cf1722C原始思路是用5e5的布尔数组对字符串哈希是否出现进行记录,但每次处理时初始化增加时间复杂度,大型数组增加空间复杂度,且编程时处理细节及判断较为繁琐考虑使......
  • Problem P17. [算法课贪婪]分发饼干
    力扣也有这道题,但是力扣做的很快,碰到有输入输出的题目就感觉我在做两道题目,一道是如何输入两行,每行是一个不定长的数组元素,最后在代码中转为数组,c++不好做,c的话可能就更......
  • 0-4 测试面试题_16合并两个排序数组_17tcp和udp_18单元集成系统验收回归_19测试和开发
    面试题(除个别外)及部分解析答案来自牛客网https://www.nowcoder.com/exam/interview/以下所述内容并不是百分之百正确,仅供参考。16手写代码:合并两个排序数组Merge1......
  • swift都有哪些关键字
    var和let、变量常量final、修饰的类变量函数不能继承和重写,修饰的函数为直接派发struct和enum和class、结构体和枚举为值类型,类为引用类型override、重写deinit、反初......