首页 > 编程 > C++ > 正文

c++ explicit 使用及困惑01

2019-11-08 00:46:18
字体:
来源:转载
供稿:网友

学习参考链接【他人的】: http://www.cnblogs.com/solidblog/p/3381628.html

1,看到别人写explict 用法,就使用两个分别进行了比较

// code 1class ss { public: ss(int n) { m_iCounter = n; }; ~ss() { std::cout << m_iCounter << std::endl; std::getchar(); }; PRivate: int m_iCounter;};// code 2class 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,就是回顾一下深,浅拷贝函数的区别,如果复制的对象在构造函数中使用申请了对内存,浅拷贝函数是只会复制指针指向的地址,而不是自己重新申请一块内存空间。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选