栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

拷贝构造函数(C++)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

拷贝构造函数(C++)

一、对象赋值语句

这个比较简单,就直接上代码啦

#include
using namespace std;
class Myclass{
private:
    int a,b;
public:
    void set(int i,int j){
        a=i;
        b=j;
    }
    void show(){
        cout<

测试用例:

二、拷贝构造函数

拷贝构造函数是一种特殊的构造函数,其形参是本类对象的引用。

拷贝构造函数的作用是,在建立一个新对象时,使用一个已经存在的对象去初始化这个新对象。

2.1、自定义拷贝构造函数

类名::类名(const 类名& 对象名){//函数体}

例:类名  对象2(对象1);(代入法)

类名  对象3=对象1;(赋值法)(底层依然调用拷贝构造函数)

class Point {
private:
	int x, y;
public:
	Point(int a,int b) {
		x = a;
		y = b;
	}
	Point(const Point & p) {
		x = 2 * p.x;
		y = 2 * p.y;
	}
	void show() {
		cout << x << "  " << y << endl;
	}
};
int main() {
	Point p1(20,30);
	Point p2(p1);
	Point p3 = p1;
	p1.show();
	p2.show();
	p3.show();
	return 0;
}

测试用例:

 2.2、默认拷贝构造函数
class Point {
private:
	int x, y;
public:
	Point(int a,int b) {
		x = a;
		y = b;
	}
	void show() {
		cout << x << "  " << y << endl;
	}
};
int main() {
	Point p1(20,30);
	Point p2(p1);
	Point p3 = p1;
	p1.show();
	p2.show();
	p3.show();
	return 0;
}

测试用例:

 2.3、调用拷贝构造函数的3种情况

(1)当用类的一个对象去初始化该类的另一个对象时,会调用拷贝构造函数

Point p2(p1);
Point p3=p1;

(2)当函数的形参是类的对象,在调用函数进行形参和实参结合时,会调用拷贝构造函数

void fun(Point p){
    p.print();
}
int main(){
    Point p1(10,20);
    fun(p1);
    return 0;
}

(3)当函数的返回值是类的对象,在函数调用完毕将返回值(对象)带回函数调用处时,会调用拷贝构造函数,将此对象复制给一个临时对象并传到该函数的调用处。

Point fun(){
    Point p1(10,20);
    return p1;
}
int main(){
    Point p2;
    p2=fun();
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/917156.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号