c++ explicit 使用及困惑01

学习参考链接【他人的】:
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,就是回顾一下深,浅拷贝函数的区别,如果复制的对象在构造函数中使用申请了对内存,浅拷贝函数是只会复制指针指向的地址,而不是自己重新申请一块内存空间。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值