问题讨论:程序 C/C++ Java GUI编程 ASP Php Shell Perl Web开发 软件工程 三大件 机箱 存储设备 光存储 音频设备 视频设备 外设 购机
asp php java C CGI .net vb delphi unix&linux sql Word Excel WPS OutLook Powerpoint Dreamweaver FPage/Golive CSS/HTML DOM/JS
热门词:流程图 excel 入侵检测 vss Windows 安全漏洞 QQ空间 事件编程 MFC

 程序设计交流 > C/C++ 

请教关于explicit应用于拷贝构造函数上的问题

[2008-11-20 2:17:40] [来源: 百家电脑学院] [我要投稿]

2008-11-19 22:25deepinthesea请教关于explicit应用于拷贝构造函数上的问题

请教各位一个问题, 对于下面这个代码, 即在拷贝构造函数前面加上explicit会出错, 请问一下是什么原因啊? 谢谢:

#include
using namespace std;

class nocopy
{
public:
nocopy(int i)
{
cout << "nocopy(int i)" << endl;
}

explicit nocopy(const nocopy & i)
{
cout << "nocopy(const nocopy&)" << endl;
}

};

int main()
{
nocopy a(12);

nocopy b = a; // nocopy b(a) is ok .
return 0;
}



我知道explicit的作用, 即不会隐式地进行类型转化. 但是不清楚为什么在拷贝构造函数上这样用却有点问题呢?

谢谢指教.
2008-11-19 22:25Roemernocopy b = a; 隐式调用
nocopy b(a) ; 显式调用
2008-11-19 23:01deepinthesea
原帖由 Roemer 于 2008-11-19 22:43 发表
nocopy b = a; 隐式调用
nocopy b(a) ; 显式调用


谢谢, 基本上明白了.

另外再请教一下, 像这种的话是不是就只有nocopy b(a)这种写法了?
而没有像

nocopy a(12);
or
nocopy a = nocopy(12); 这类似的写法?
谢谢.

·请教关于explicit应用于拷贝构造函数上的问题 | 相关文章·

·百家学院 | 最新评论·