读书笔记--抑制构造函数定义隐式转换
2007-03-20 23:07
260 查看
可以通过将构造函数声明为explicit,来防止在需要隐式转换的上下文中使用构造函数。explicit关键字只能用于类的内部构造函数声明上,在类的定义体外不再重复
class Sales_item
{
public:
Sales_item(const string &book=""):isbn(book),units.sold(0),revenue(0.0){}
};
string null_book="9-19";
item same_isbn(null_book);
这段程序使用一个string类型对象作为实参传给Sales_item的same_isbn函数。编译器使用接受一个string的Sales_item被传递给Sales_isbn.
使用explicit后,构造函数不能用于隐式创建对象
item.same_isbn(null_book); //error:string constructor is explicit
使用显示的构造函数:
string null_book="9-19";
item.same_isbn(Sales_item(null_book)); //ok
class Sales_item
{
public:
Sales_item(const string &book=""):isbn(book),units.sold(0),revenue(0.0){}
};
string null_book="9-19";
item same_isbn(null_book);
这段程序使用一个string类型对象作为实参传给Sales_item的same_isbn函数。编译器使用接受一个string的Sales_item被传递给Sales_isbn.
使用explicit后,构造函数不能用于隐式创建对象
item.same_isbn(null_book); //error:string constructor is explicit
使用显示的构造函数:
string null_book="9-19";
item.same_isbn(Sales_item(null_book)); //ok
相关文章推荐
- 【C++基础之十七】抑制由构造函数定义的隐式转换
- c++:explicit 抑制构造函数隐式转换
- explicit:C++规定,当定义了只有一个参数的构造函数时,同时也定义了一种隐式的类型转换
- C/C++日常学习总结(第十二篇)将构造函数声明为explicit(显式)的方式可以抑制隐式转换
- explicit只对构造函数起作用,用来抑制隐式转换
- 如何抑制构造函数的隐式转换?
- explicit 只对构造函数起作用,用来抑制隐式转换
- C++ 抑制构造函数定义的隐式转换
- C++中的explicit关键字 抑制隐式转换
- Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL
- QStringLiteral(源代码里有一个通过构造函数产生的从const char*到QString的隐式转换,QStringLiteral字符串可以放在代码的任何地方,编译期直接生成utf16字符串,速度很快,体积变大)
- 调用构造函数进行类型转换(显式和隐式)
- C++ 学习之构造函数:构造函数小结3 默认构造函数、隐式类型转换和复制构造函数
- Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL
- 声明时候构造函数前加explicit -防止构造函数参数的隐式转换
- 抑制隐式转换explicit
- C++ 学习之构造函数:构造函数小结3 默认构造函数、隐式类型转换和复制构造函数
- 构造函数的显式、隐式转换--explicit
- 《Effective C++》读书笔记之item46:需要类型转换时请为模板定义非成员函数
- Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL