鱼C论坛

 找回密码
 立即注册
查看: 1147|回复: 2

[已解决]C++ 复制构造函数

[复制链接]
发表于 2018-9-17 11:03:19 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 wow7jiao 于 2018-9-17 11:08 编辑

#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)--------------------------------------------这个1
{
        x = p.x;
        y = p.y;
        cout << "Calling the copy constructor" << endl;
}

int main()
{
        Point a (1, 2);-------------------------------------------------〉请老师指点,这里建立对象a,前面1没有设置初始化的构造函数。为什么也可以将实参值初始化。
        //Point b (a);
       
        cout << a.getX() << endl;
        return 0;
}
最佳答案
2018-9-17 11:03:20
1.拷贝构造函数的  参数是Point::Point (const Point &p) 类型的
2.你这里相当于有两个构造函数   Point (int xx = 0, int yy = 0) 和 Point (Point &p),根据函数重载规则
Point a (1, 2) 和 Point b (a) 都可以创建一个对象

最佳答案

查看完整内容

1.拷贝构造函数的 参数是Point::Point (const Point &p) 类型的 2.你这里相当于有两个构造函数 Point (int xx = 0, int yy = 0) 和 Point (Point &p),根据函数重载规则 Point a (1, 2) 和 Point b (a) 都可以创建一个对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-17 11:03:20 | 显示全部楼层    本楼为最佳答案   
1.拷贝构造函数的  参数是Point::Point (const Point &p) 类型的
2.你这里相当于有两个构造函数   Point (int xx = 0, int yy = 0) 和 Point (Point &p),根据函数重载规则
Point a (1, 2) 和 Point b (a) 都可以创建一个对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-17 12:30:03 | 显示全部楼层
Point a (1, 2);   这个是通过括号里的1,2两个参数来初始化a,很明显要调用有参构造函数来初始化;
point b(a);      用一个对象a去初始化另一个新定义的对象b,这个肯定要调拷贝构造函数呗,
还有这种情况 Point b = a;    C++编译去也会调用拷贝构造函数通过a去初始化b;
这是拷贝构造函数的简单应用场景,还有对象在从实参传给形参的时候,和调用返回类对象的函数的时候也会调用拷构造函数。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
wow7jiao + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 14:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表