Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1042902
  • 博文数量: 326
  • 博客积分: 10135
  • 博客等级: 上将
  • 技术积分: 2490
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-22 23:53
文章分类

全部博文(326)

文章存档

2014年(1)

2012年(4)

2011年(1)

2010年(4)

2009年(41)

2008年(44)

2007年(63)

2006年(168)

我的朋友

分类:

2007-03-09 11:52:49

 

    单参数构造函数的一个隐含意思是:将该参数转换成该类的一个对象。这实际上是一个隐式的类型转换。
要注意,参数定义缺省值的构造函数只要在调用时能形成单参数形式,同样具有隐式类型转换功能。
      关键字explicit用来禁止编译器隐式调用该构造函数,以防止隐式的类型转换,但对显式调用该函数则没有问题

class CTest
{
public:
 //explicit CTest(char){}
 //CTest(char){}
};
 
void TestFunction(CTest anObj)
{
}
 
int _tmain(int argc, _TCHAR* argv[])
{
 TestFunction('A');//如果构造函数CTest(char){}前加上explicit则编译器报错,因为编译器禁止将字符型隐式转换为CTest型。
                          //如果不加explicit则编译器不报错,因为编译器会隐式调用构造函数去把char型构造成一个CTest型,
                          //例如编译器可以这样做:TestFuntion(CTest(‘A’));
 return 0;
}
阅读(1114) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~