稳定盈利的期货交易方法-量化趋势交易

alantop -专业量化投资者

爱好:量化投资,逆向工程,渗透
随笔 - 595, 文章 - 0, 评论 - 921, 引用 - 0
数据加载中……

explicit的用法

explicit用法,防止对象隐式被转换。

例子一:隐式转换

 

class C
{
public: 
    C ( int j );
    int i;
};
C
::C (int j)
{
    i 
= j;
}
int main()
{
    C c(
0);
    c 
= 5//5被隐式转换

 

 

 

= 5  相当于


C temp(
5);// 实例化一个临时对象,
= temp; // 用 = 赋值
temp.C::~C(); // temp 的析构函数被激活

 

 

如果类内的成员是一个指针,这种隐式转换是很危险的。为了防止这种隐式转换,我们把    C ( int j ); 改写为explicit     C ( int j );即可。

 

这下编译的时候,会不允许这种隐式的转换,出现如下提示:

 

 

Compiling
test
.cpp
D
:\DATUM\DATUM\PROJECT\Test_muable\test.cpp(14: error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'const int' (or there is no acceptable conversion)
Error executing cl
.exe. 

Test_muable
.exe - 1 error(s), 0 warning(s) 

posted on 2007-07-10 19:50 AlanTop 阅读(903) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理