本文共 748 字,大约阅读时间需要 2 分钟。
c++的构造函数也定义了一个隐式转换
explicit只对构造函数起作用,用来抑制隐式转换
看一个小例子
新建一个头文件
#ifndef CMYSTRING_H#define CMYSTRING_H#include#include using namespace std;class CMyString{public:CMyString(const char * str);void SetString(string str);};#endif // CMYSTRING_H
实现它
#include "CMyString.h"CMyString::CMyString(const char * str){ std::cout<
在调用 的时候
可以直接这么调用构造函数
CMyString my1="ab";
加上explicit
#ifndef CMYSTRING_H#define CMYSTRING_H#include#include using namespace std;class CMyString{public:explicit CMyString(const char * str);void SetString(string str);};#endif // CMYSTRING_H
之后再和上面一样调用就不会通过了
只能是
CMyString my1("ab");
本文转自lpxxn博客园博客,原文链接:http://www.cnblogs.com/li-peng/p/3645262.html,如需转载请自行联系原作者