seekting2013 2019-01-05 22:28 采纳率: 0%
浏览 407

复写虚构函数或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 16:26
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

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

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题