题解 | #浅拷贝和深拷贝#

浅拷贝和深拷贝

https://www.nowcoder.com/practice/535753110cbd4e8987adc2e67f392ab7

#include <iostream>
#include <cstring>
#pragma warning(disable : 4996)
using namespace std;

class Person {

  public:
    char* name; // 姓名
    int age;    // 年龄

    Person(const char* name, int age) {
        this->name = new char[strlen(name) + 1];
        strcpy(this->name, name);
        this->age = age;
    }

    // write your code here......
    Person(Person& p) {
        this->name = new char[strlen(p.name) + 1];
        strcpy(this->name, p.name);
        this->age = p.age;
    }

    void showPerson() {
        cout << name << " " << age << endl;
    }

    ~Person() {
        if (name != nullptr) {
            delete[] name;
            name = nullptr;
        }
    }

};

int main() {

    char name[100] = { 0 };
    int age;

    cin >> name;
    cin >> age;

    Person p1(name, age);
    Person p2 = p1;

    p2.showPerson();

    return 0;
}

全部评论

相关推荐

做黑夜里的那道光:两年电赛完赛没必要写,纯扣分
双非本科求职如何逆袭
点赞 评论 收藏
分享
不知道怎么取名字_:28届都开始出来找机会了,看来哪里都卷
实习简历求拷打
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务