码迷,mamicode.com
首页 > 编程语言 > 详细

C++学习体会--引用方式复制类对象

时间:2018-08-13 00:45:34      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:定义   code   系统   char*   cal   值传递   资源   bsp   cbo   

C++学习体会--引用方式复制类对象

引用的重要性实际体现在函数的形参和函数的返回值。一般引用也只是出现在这两个地方。

引用方式的好处,如果是体现在形参,在使用函数的时候,实参必定会初始化形参,如果不加引用,系统会创建实参的副本将值传递给形参,这样会造成资源额外的占用。为了节省资源的占用,通过一种引用的方式,达到这个效果,因为引用知识将实参的地址给了形参,处理形参,如同处理实参。

 

下面将给出程序使用的例子:引用的重要性体现在形参上

 

#include <iostream>
using namespace std;

class CBox
{
private:
    double m_Length;
    double m_Width;
    double m_Height;

public:

    CBox(double lv, double wv, double hv) : m_Length{ lv }, m_Width{ wv }, m_Height{ hv }
    {
        cout << "Constrcurtor called." << endl;
    }

    CBox(const CBox &initB) :CBox{ initB.m_Length, initB.m_Width, initB.m_Height }{
    
        cout << " refrence  called" << endl;
    }

    double volume()
    {
        return m_Length*m_Height*m_Width;
    }

};


int _tmain(int argc, _TCHAR* argv[])
{
    CBox box1( 10.0, 10.0, 10.0 );
    CBox mybox(box1);// mybox{box1};相同
 
    
    cout << "Volume of box1=" << box1.volume() << endl;
    cout << "Volume of mybox=" << mybox.volume() << endl;
    
    return 0;
}

 

结果:

技术分享图片

 

分析:

    CBox box1( 10.0, 10.0, 10.0 );
    CBox mybox(box1);
1.这两句的类定义,会自动调用构造函数,在类声明中可以看到每次调用构造函数时,会显示Constrcurtor called .
2.因为定义mybox()以box1作为实参,不是为box1创建副本,而是通过引用的方式传递给形参,成功通过引用的方式时,将会出现refrence called

 

C++学习体会--引用方式复制类对象

标签:定义   code   系统   char*   cal   值传递   资源   bsp   cbo   

原文地址:https://www.cnblogs.com/pans0ul/p/9465451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!