学习参考链接【他人的】:
http://www.cnblogs.com/solidblog/p/3381628.html
1,看到别人写explict 用法,就使用两个分别进行了比较
// code 1
class ss {
public:
ss(int n) {
m_iCounter = n;
};
~ss() {
std::cout << m_iCounter << std::endl;
std::getchar();
};
private:
int m_iCounter;
};
// code 2
class ss_explicit {
public:
explicit ss_explicit(int n) {
m_iCounter = n;
};
~ss_explicit() {
std::cout << m_iCounter << std::endl;
std::getchar();
};
private:
int m_iCounter;
};
//主函数
int main(void)
{
ss tp1('a'); ------ok
ss tp2(15); ------ok
ss tp3 = 12; ------ok
ss tp4 = 'a'; ------ok
ss_explicit tp1('a'); ------ok
ss_explicit tp2(15); ------ok
// 1, 隐式转换
// 2, 深,浅拷贝函数
//ss_explicit tp3 = 12; ------false
//ss_explicit tp4 = 'a'; ------false
return 0;
}
**然后我就开始了进一步的猜测**
1,我认为隐式转换应该分成了两个可能性:
参数转换,还是说调用浅拷贝函数这里进行了参数转换,通过 ss 和 ss_explicit 的前两组数据进行对比,发现就算是用了explicit 修饰符,但是依旧可以进行构造函数参数的转换。说明: 隐式转换指的是调用默认的拷贝构造函数进行转换。那么说到了这,让我疑惑的就是,使用浅拷贝会产生多大的问题?会造成什么不良影响?【那么这里留个悬念,请教下身边的大神先】
2,就是回顾一下深,浅拷贝函数的区别,如果复制的对象在构造函数中使用申请了对内存,浅拷贝函数是只会复制指针指向的地址,而不是自己重新申请一块内存空间。