注册 登录
编程论坛 C++教室

拷贝构造函数

jhkyy 发布于 2010-06-15 20:07, 449 次点击
#include <iostream>
using namespace std;
class A
{
public:
    A(){cout<<"执行构造函数创建一个对象\n";}
    A(A&){cout<<"执行复制构造函数创建该对象的副本\n";}
    ~A(){cout<<"执行析构函数删除该对象\n";}
};
A func(A one)
{
   
    return one ;
}
int main()
{
    A a;
    func(a);
    return 0;
}
解释下拷贝 过程 为什么这个 A(A&){cout<<"执行复制构造函数创建该对象的副本\n";}
执行两次
2 回复
#2
laigaoat20052010-06-15 20:32
程序代码:
#include <iostream>
using namespace std;
class A
{
public:
    A(){cout<<"执行构造函数创建一个对象\n";}
    A(A&){cout<<"执行复制构造函数创建该对象的副本\n";}
    ~A(){cout<<"执行析构函数删除该对象\n";}
};
A func(A one)
{
    cout << "函数里未返回前\n";         //这里之前执行了一次A(A&)
    getchar();
    return one ;
}
int main()
{
    A a;
    cout << "测试点1\n";
    func(a);
    cout << "测试点2\n";                 //这里之前又执行了一次A(A&)
                                         
// 然后执行两次~A()
    getchar();
    return 0;
}

#3
jhkyy2010-06-18 01:26
谢谢哈!!
1