C++拷贝构造

#include<iostream>
#include<string>
using namespace std;
class Complex
{
public:
      Complex();
      //单参构造 类型转换构造函数
      explicit Complex(double real);//explicit 阻止隐式转换
      //单参构造
      Complex (Complex const & that);
      ~Complex();
      void print()const
    {
      cout<<m_real<<"+"<<m_vir<<endl;
    }
private:
      double m_real;//实
      double m_vir;//虚
};
int main()
{   
    Complex* p_ca=new(Complex);
    p_ca.print();
    Complex cp1(1.2);//显示调用
    cp1.print();
    Complex cp2=1.2;//隐式调用 单参构造把1.2转换成Complex类型 Complex cp2=Complex (1.2)
    Complex cp3=cp1;//隐式调用 
    cp3.print();
    Complex cp4(cp1);//显示调用
    cp4.print();
    Complex* pcp1=new Complex(cp1);
    pcp1->print();
    pcp1=&cp1;//不是拷贝构造
    //Complex* pcp2=pcp1; 没有调用拷贝构造 就是一个类指针换了个指向地址
     
return 0;
}
Complex::Complex()
{
      m_real=0;
      m_vir=0;
     cout<<"默认构造"<<endl;
}
Complex::Complex(double real)
{
     m_real=real;
     m_vir=0;
     cout<<"类型转换单参构造"<<endl;
}
      Complex::Complex (Complex const& that);
{
     this->m_real=that.m_real;
     this->m_vir=that.m_vir;
     cout<<"拷贝构造"<<endl;
}
//编译器默认提供拷贝构造 写了拷贝构造函数就不提供任何构造函数 写了构造函数没写拷贝构造会默认提供拷贝构造函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值