Chinaunix首页 | 论坛 | 博客
  • 博客访问: 972068
  • 博文数量: 58
  • 博客积分: 10192
  • 博客等级: 上将
  • 技术积分: 1845
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-22 21:24
文章分类

全部博文(58)

文章存档

2011年(11)

2010年(12)

2009年(20)

2008年(15)

分类: C/C++

2009-05-19 23:53:55

1.如果类没有定义拷贝构造函数,则会自动创建默认拷贝构造函数(采用位拷贝方式)。
#include
class cp1
{
    public:
        cp1(){std::cout<<"Constructor"<        ~cp1(){std::cout<<"Deconstructor"<};
int main()
{
    cp1 a;
    cp1 b = a;

    return 0;
}

2.临时对象:
#include
class cp2
{
    public:
         cp2(){std::cout<<"Constructor"<         ~cp2(){std::cout<<"Deconstructor"<         cp2(const cp2& b){std::cout<<"Copy constructor"<};
cp2 f(cp2 x){ return x;};
int main()
{
        cp2 a;
        f(a);
        return 0;
}

main函数中的f(a)会调用拷贝构造函数。但是拷贝构造函数必须有一个作为它的目的地(this指针)的工作地址,但是f(a)的目的地址从哪里来?这时编译器创建一个看不见的对象作为f(a)返回值的目的地址。一旦函数调用结束就会调用析构函数。
阅读(1293) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~