C++11中default关键字

C++11添加了很多新特性,使C++看上去更加的灵活和面向对象,其中新关键字default值得我们关注一下。
  我们知道有时候当我们仅创建了有参构造函数后,如果你想调用无参构造函数编译是会报错的。因为一旦你自己定义了构造函数,系统的默认构造函数是被屏蔽的,也就是说此时是没有无参构造函数的,所以我们需要自己定义一个无参构造函数。但是现在在C++11中,如果我们仅定义了有参构造函数,可以通过default关键字让默认构造函数恢复。具体实现如下:

<span style="color:#000000"><code><span style="color:#000088 !important">class</span> CString  
{  
    <span style="color:#000088 !important">char</span>* _str = <span style="color:#000088 !important">nullptr</span>;  
<span style="color:#000088 !important">public</span>:      
    CString() = <span style="color:#000088 !important">default</span>;  <span style="color:#880000 !important"><em>//恢复默认构造函数  </em></span>
    CString(<span style="color:#000088 !important">const</span> <span style="color:#000088 !important">char</span>* pstr) : _str(<span style="color:#000088 !important">nullptr</span>)  <span style="color:#880000 !important"><em>//自定义的有参构造</em></span>
    {  
        UpdateString(pstr);  
    }   
    ~CString()  
    {  
        <span style="color:#000088 !important">if</span> (_str)  
            <span style="color:#4f4f4f !important">free</span>(_str);  
    }    
    <span style="color:#000088 !important">void</span> UpdateString(<span style="color:#000088 !important">const</span> <span style="color:#000088 !important">char</span>* pstr) <span style="color:#000088 !important">throw</span>()  
    {  
        <span style="color:#000088 !important">if</span> (pstr == <span style="color:#000088 !important">nullptr</span>)  
            <span style="color:#000088 !important">return</span>;  

        <span style="color:#000088 !important">if</span> (_str)  
            <span style="color:#4f4f4f !important">free</span>(_str);  

        _str = (<span style="color:#000088 !important">char</span>*)<span style="color:#4f4f4f !important">malloc</span>(<span style="color:#4f4f4f !important">strlen</span>(pstr) + <span style="color:#006666 !important">1</span>);  
        <span style="color:#4f4f4f !important">strcpy</span>(_str,pstr);  
    }     
    <span style="color:#000088 !important">char</span>* GetStr() <span style="color:#000088 !important">const</span> <span style="color:#000088 !important">throw</span>()  
    {  
        <span style="color:#000088 !important">return</span> _str;  
    }  
};  </code></span>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值