学习C++(入门教程)之拷贝构造函数实例详解

27 篇文章 1 订阅
10 篇文章 0 订阅

学习目标:

掌握C++拷贝构造函数

  • 如何实现拷贝构造函数
  • 什么是拷贝构造函数

学习内容:

实现C++拷贝构造函数


学习时间:

五分钟快乐学习


学习产出:

进行上机实验,明白拷贝构造函数与构造函数的区别与联系

  • 技术笔记 2 遍
  • CSDN 技术博客 3 篇
  • 习的 vlog 视频 1 个

 C++拷贝构造函数

在C++中,与类名同名,且形参是本类对象的引用类型的函数,叫做拷贝构造函数(Copy Constrctor),与构造函数一样,当我们不主动定义的时候,系统也会自动生成一个,进行两个对象成员之间对应的简单赋值,用来初始化一个对象,如以下的情形:

#include<iostream>
using namespace std;
#define PI 3.1415
class Circle
{
private:
    double R;
public:
    Circle(double R);
    Circle(Circle& A);
    double area();
    double girth();
};
Circle::Circle(double R)
{
    cout << "Constructor" << endl;
    this->R = R;
}
Circle::Circle(Circle& A)
{
    cout << "Copy Constructor" << endl;
    this->R = A.R;
}
double Circle::area()
{
    return PI * R * R;
}
double Circle::girth()
{
    return 2 * PI * R;
}
int main()
{

    Circle A(5);
    Circle B(A);
    return 0;
}

本例中定义了一个Circle圆形类,分别定义了带参数的构造函数和拷贝构造函数,然后在主函数中定义A对象,并传入初始值,调用带参数的构造函数。及定义B对象,通过A对象来初始化B对象。运行结果如下:

 

第一次定义的A对象调用带参数的构造函数,第二个B对象由于是通过A对象来初始化,所以调用拷贝构造函数。在开头我们提到如果我们不主动定义拷贝构造函数,也会自动为我们生成一个,那我们为何还要自己定义呢?那是因为,默认的拷贝构造函数仅仅是做简单的赋值,有些情况则要出现问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值