c++复制构造函数

原创 2018年04月16日 22:13:01


  拷贝构造函数一类特殊的构造函数,具有一般构造函数的所有特性,其形参是本类对象的引用,起作用是使一个已经存在的对象(由复制构造函数的参数指定),去初始化同类的一个对象。初始化对象的每个数据成员都复制到新建立的对象中
   普通函数是在对象被创建时被调用,而复制构造函数在以下三种情况下都会被调用

      1.当用类的一个对象去初始化该类的另一个对象时
      2.如果函数的参数是类的对象,调用函数时,进行形参和实参结合
      3.如果函数的返回值是类的对象,函数执行完成返回调用者时

#include<iostream>
using namespace std;
class point
{
public:
	point(int xx = 0, int yy = 0)
	{
		x = xx;
		y = yy;
	}
	point(point&p);
	
	int getx()
	{
		return x;

	}
	int gety()
	{
		return y;
	}
	
private:
	int x, y;


};
point::point(point&p)
{
	x = p.x;
	p = p.y;
	cout << "this is copy construct" << endl;
}
void fun1(point p)
{
	cout << p.getx() << endl;
}
point fun2()
{
	point a(1, 2);
	return a;
}
int main()
{
	point a(4, 5);
	point b = a;
	cout << b.getx() << endl;
	fun1(b);
	b = fun2();
	cout << b.getx() << endl;
	return 0;

}
当数据成员中有指针类型时,默认的复制构造函数只能是浅复制,浅复制涉及安全方面的问题,要实现正确的复制,必须实行深复制

  

C++复制构造函数详解

  • 2011年09月10日 11:31
  • 5MB
  • 下载

关于c++中不允许复制构造函数传值参数的理解

问题源于看剑指offer上的一道面试题,题目如下: class A{ private: int value; public: A(int n){ value = n; } A...
  • xiaoquantouer
  • xiaoquantouer
  • 2017-04-12 17:27:23
  • 1802

C++的简单总结(复制构造函数,深拷贝,前拷贝,默认属性)

类的三大属性: private,public,protected 1,对于类的成员变量或者函数,缺省即为私有 #include using namespace std; class A { ...
  • msdnwolaile
  • msdnwolaile
  • 2016-07-17 18:56:04
  • 1908

C++语法,复制构造函数与=运算符重载

C++:复制构造函数在什么时候被调用?它和operator = 区分 1、对象在创建时使用其他的对象初始化 Person p(q); //此时复制构造函数被用来创建实例p Perso...
  • u010003835
  • u010003835
  • 2015-08-06 11:15:19
  • 785

C++复制构造函数和拷贝构造函数

1 拷贝构造函数参数的特点 赋值构造函数要申请内存。就像一般的构造函数一样。 而赋值操作,是已经申请好了内存。只是赋值。 对于一个类X,如果一个构造函数的第一个参数是下列之一: a) ...
  • hongkangwl
  • hongkangwl
  • 2014-03-04 14:53:03
  • 2390

C++复制构造函数与重载赋值操作符

http://www.cnblogs.com/BlueTzar/articles/1223313.html 复制构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它的唯一的一个参数是本类型的一...
  • qq_30230091
  • qq_30230091
  • 2015-07-30 16:21:48
  • 1382

C++——复制构造函数的形参为什么要是const引用

1.首先来说重要的一点, 为什么要是引用: 如对于 CBox(CBox initB);//复制构造函数一开始想到的原型 CBox cigar; CBox myBox(cigar); //如果编写这样...
  • sinat_36053757
  • sinat_36053757
  • 2017-04-24 14:17:41
  • 967

c++复制构造函数实例

#include using namespace std; //复制构造函数只有一个参数,即对同类对象的引用 //形如 X::X(X& ..)或X::X(const X &..),二者选一 //如果...
  • horseinch
  • horseinch
  • 2016-03-04 18:27:42
  • 305

不允许拷贝构造函数传值参数,而必须是传引用或者常量引用

不允许拷贝构造函数传值参数,而必须是传引用或者常量引用 class A { private: int value; public: A(int n) { value = n; ...
  • u011416077
  • u011416077
  • 2016-08-20 12:47:00
  • 276

C++派生类的构造函数和复制控制

派生类的构造函数和复制控制成员不能继承,每个类定义自己的构造函数和复制控制成员,像任何类一样,如果类没有定义自己的构造函数和复制控制成员,编译器自动合成。 1.构造函数 派生类的构造函数先要初始化...
  • zhy_cheng
  • zhy_cheng
  • 2012-11-19 21:11:54
  • 3088
收藏助手
不良信息举报
您举报文章:c++复制构造函数
举报原因:
原因补充:

(最多只允许输入30个字)