委派构造函数

1,可以形成链状的委托构造函数,但是不可以形成委托环:
class weipai2
{
private:
    string name;
    int sex;
    weipai2(string name,int sex):name(name),sex(sex){}
public:
    weipai2(string name):weipai2(name,1){}
    weipai2(int sex):weipai2("ch",sex){}
    weipai2():weipai2(1){}
};
<span style="font-family: Arial, Helvetica, sans-serif;">以下是我的测试代码:</span>

</span><pre name="code" class="cpp"><span style="font-size:18px;">#include <iostream>
using namespace std;
#include<vector>
#include<list>
#include<deque>
class base
{
private:

    int i;
public :
    base(int i):i(i){}
    void set_value(int i)
    {
        this->i = i;
    }
    virtual int get()
    {
        return i;
    }
};
class son1 :public base
{
private:
    double mf_value;
    public:
    using base::base;
   // using base::set_value;   //注释了:调用的是子类函数,没注释:调用基类
    void set_value(double mf_value)
    {
        this->mf_value = mf_value;
    }

};
class weipai
{
private:
    int name;
    int type;
    void set_value()
    {
        name = 3;
        cout<<"a"<<endl;
    }
public:
    weipai(){set_value();}
    weipai(int i):weipai()   //在此不可以有初始化列表,初始化必须放在函数体
    {
        cout<<"b"<<endl;
        type = i;
    }
    void put_value()
    {
        cout<<name<<"   "<<type<<endl;
    }
};
class weipai2
{
private:
    string name;
    int sex;
    weipai2(string name,int sex):name(name),sex(sex){}
public:
    weipai2(string name):weipai2(name,1){}
    weipai2(int sex):weipai2("ch",sex){}
    weipai2():weipai2(1){}
};
class biaozhun
{
private:
    template<class T> biaozhun(T first,T last):l(first,last){}
    list<int> l;
public:
    biaozhun(vector<short> &v):biaozhun(v.begin(),v.end()){};
     biaozhun(deque<short> &d):biaozhun(d.begin(),d.end()){};
};
int main()
{
    son1 m_son(1);
    //son1 m_son2 ;编译失败
    m_son.set_value(4);
    cout<<m_son.get()<<endl;
    vector<int> m_vector(3,2);  //创建一个大小为3,所有元素只为2的vector容器
    for(auto x = m_vector.begin();x != m_vector.end();x++)
    {
        cout<<*x<<endl;
    }
    cout<<"========================================"<<endl;
    vector<short> v;
    biaozhun m_biaozhun(v);
 //   cout<<v.begin()<<"   "<<v.end()<<endl;
     for(auto x = v.begin();x != v.end();x++)
    {
        cout<<*x<<endl;
    }
            return 0;
}
</span>


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Car12

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值