美文网首页
拷贝构造函数的自动调用

拷贝构造函数的自动调用

作者: 始于尘埃 | 来源:发表于2019-06-10 18:03 被阅读0次

跟着米sir学编程

//拷贝构造函数的自动调用

#include <iostream>
using namespace std;

class Point{

private:
    int x,y;
public:
    Point(int a=0,int b=0) //带默认参数的构造函数
    {
        x=a;
        y=b;
    }
    /*
    Point(Point &p){   //拷贝构造函数(已经存在一个对象p)
        x=p.x;
        y=p.y;
        
    }
    */
    int getX(){    //成员函数,获取x的坐标
        return x;
    }
    int getY(){
        return y;
    }
};

void func1(Point p){  //对象作为参数
    cout<<p.getX()<<','<<p.getY()<<endl;
}
Point func2(){ //对象作为返回值
    Point p(100,200);
    return p;
}
int main(){
    Point p1(10,20); //自动调用构造函数,初始化对象
    func1(p1); //自动调用拷贝函数
    Point p2; //自动调用构造函数(用默认参数进行初始化)
    func1(p2); //调用拷贝函数
    p2 = func2(); //调用拷贝函数
    func1(p2);
    system("pause");
    return 0;
}

/*
问题说明:
1.拷贝函数的作用,可以不用拷贝函数吗?
ans:
如果在定义类时,不定义拷贝函数,编译器会自动为类添加一个默认的拷贝构造函数,但是,
默认的拷贝只是浅拷贝的工作方式,即只进行二进制内存空间上的数据简单复制,不为数据成员分配空间内存。
浅拷贝只能完成基本类型的拷贝,若类中含有指针类型的数据成员(需要为成员动态内存空间),浅拷贝就可能造成危险,
因为有可能两个对象的指针指向同一个内存区域;
自定义的拷贝深拷贝,可以动态分配内存空间。
*/

相关文章

  • 理解深浅拷贝以及深浅拷贝的方法

    先考虑一种情况,对一个已知对象进行拷贝,编译系统会自动调用一种构造函数——拷贝构造函数,如果用户未定义拷贝构造函数...

  • 拷贝构造函数的自动调用

    跟着米sir学编程 //拷贝构造函数的自动调用 /*问题说明:1.拷贝函数的作用,可以不用拷贝函数吗?ans:如果...

  • c++:拷贝构造函数&&深浅拷贝

    默认拷贝构造函数的汇编代码: 其实就相当于这一段代码 拷贝构造函数 多态拷贝构造函数 子类拷贝构造函数调用父类拷贝...

  • C++之构造进阶之拷贝构造

    拷贝构造函数的概述 拷贝构造函数的本质是构造函数。 调用拷贝构造的时机:旧对象给新对象初始化。 用户不提供拷贝构造...

  • JAVA clone与new之间比较

    clone不调用构造函数,new调用构造函数; clone通过深拷贝或浅拷贝复制原对象属性值,new在执行构造函数...

  • 面试题目

    拷贝构造函数通常用于 当用类的一个对象去初始化该类的另一个对象(或引用)时系统自动调用拷贝构造函数实现拷贝赋值 若...

  • [C++之旅] 12 拷贝构造函数

    [C++之旅] 12 拷贝构造函数 拷贝构造函数的特点 如果没有自定义的拷贝构造函数则系统自动生成一个默认的拷贝构...

  • C++ 拷贝构造函数浅析

    什么是拷贝构造函数:拷贝构造函数,顾名思义,就是在拷贝的时候调用的构造函数。 几个原则:C++ primer p4...

  • C++类的默认函数解析、浅拷贝、深拷贝

    拷贝构造函数 当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用。...

  • C++ 拷贝构造函数

    拷贝构造函数 拷贝构造函数是一种构造函数 当利用已存在的对象创建一个新的对象时(类似于拷贝),就会调用新对象的拷贝...

网友评论

      本文标题:拷贝构造函数的自动调用

      本文链接:https://www.haomeiwen.com/subject/cldtfctx.html