c++的构造函数也定义了一个隐式转换

explicit只对构造函数起作用,用来抑制隐式转换

看一个小例子

新建一个头文件

#ifndef CMYSTRING_H
#define CMYSTRING_H
#include<string>
#include<iostream> 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<<str;
} void CMyString::SetString(string str)
{
std::cout<<str;
}

在调用 的时候

可以直接这么调用构造函数

CMyString my1="ab";

加上explicit

#ifndef CMYSTRING_H
#define CMYSTRING_H
#include<string>
#include<iostream> using namespace std; class CMyString
{
public: explicit CMyString(const char * str); void SetString(string str);
}; #endif // CMYSTRING_H

之后再和上面一样调用就不会通过了

只能是

CMyString my1("ab");

最新文章

  1. Python学习笔记——文件
  2. Quick Sort(快排)
  3. ie6 7 8 9 firefox的css兼容问题
  4. python 代码格式化工具:pep8ify
  5. 谓词--Predicate
  6. Redis核心解读:集群管理工具(Redis-sentinel)
  7. 重新想象 Windows 8 Store Apps (3) - 控件之内容控件: ToolTip, Frame, AppBar, ContentControl, ContentPresenter; 容器控件: Border, Viewbox, Popup
  8. mysql 时间类型分类
  9. Redis持久存储-AOF&RDB
  10. 新版iTunes如何设置手机铃声
  11. Android远程桌面助手(B1309)
  12. jsp与jsp页面间的值传递与接收
  13. 为什么要用日志框架 Logback 基本使用
  14. margin不生效问题
  15. VMware下Mac系统自适应屏幕
  16. Netty 高性能之道 - Recycler 对象池的复用
  17. at91sam9260 笔记1
  18. MySQL InnoDB的存储结构总结
  19. js实现轮播图2
  20. maven GroupId 和ArtifactId通常填什么

热门文章

  1. HashSet vs TreeSet vs LinkedHashSet
  2. Asp.net MVC的Model Binder工作流程以及扩展方法(2) - Binder Attribute
  3. easy ui 1.4的NumberBox,失去焦点后不能再次输入小数点
  4. JVM探索之——内存管理(一)
  5. x01.Game.CubeRun: XACT3 播放声音
  6. keil 怎样新建工程,编写代码?
  7. Linux nm命令
  8. Android中关于Handler的若干思考
  9. Codeforces水题集合[14/未完待续]
  10. Maven与Ant使用reportNG代替testng