seekting2013 2019-01-05 14:28 采纳率: 0%
浏览 408

复写虚构函数或copy函数引发的血案

复写虚构函数或copy函数引发的血案

代码一

#include <stdio.h>
class Person{

public:
    Person(){

        printf("无参构造\n");
    }
    int age=0;
    //    ~Person(){

    //        printf("虚\n");
    //    }
};
Person createPerson(){
    Person p;
    p.age=12;
    printf("p=%p,p.age=%p,age=%d\n",&p,&p.age,p.age);
    return p;
}


int main(){

    Person p=createPerson();
    printf("p=%p,p.age=%p,age=%d\n",&p,&p.age,p.age);
    return 0;
}

无参构造
p=0x7ffc69ea8940,p.age=0x7ffc69ea8940,age=12
p=0x7ffc69ea8960,p.age=0x7ffc69ea8960,age=12
按 <RETURN> 来关闭窗口...



发现不复写虚构函数的情况下两个对象不一样

代码二

#include <stdio.h>
class Person{

public:
    Person(){

        printf("无参构造\n");
    }
    int age=0;
    ~Person(){

        printf("虚\n");
    }
};
Person createPerson(){
    Person p;
    p.age=12;
    printf("p=%p,p.age=%p,age=%d\n",&p,&p.age,p.age);
    return p;
}


int main(){

    Person p=createPerson();
    printf("p=%p,p.age=%p,age=%d\n",&p,&p.age,p.age);
    return 0;
}


发现复写虚构会导致只有一个对象

无参构造
p=0x7ffd0d307f20,p.age=0x7ffd0d307f20,age=12
p=0x7ffd0d307f20,p.age=0x7ffd0d307f20,age=12
虚
按 <RETURN> 来关闭窗口...



代码三

#include <stdio.h>
class Person{

public:
    Person(){

        printf("无参构造\n");
    }
    int age=0;

    Person(const Person &person){
         printf("copy构造\n");
    }

};
Person createPerson(){
    Person p;
    p.age=12;
    printf("p=%p,p.age=%p,age=%d\n",&p,&p.age,p.age);
    return p;
}


int main(){

    Person p=createPerson();
    printf("p=%p,p.age=%p,age=%d\n",&p,&p.age,p.age);
    return 0;
}


会发现复写copy函数也会引发一个对象

无参构造
p=0x7ffeb79c1150,p.age=0x7ffeb79c1150,age=12
p=0x7ffeb79c1150,p.age=0x7ffeb79c1150,age=12
按 <RETURN> 来关闭窗口...


不知道为什么!!

展开全部

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 08:26
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部