Cpp一些基本问题

Dev*_*no1 1 c++ oop header-files

我的任务如下:使用char*name和int age创建类Person.使用动态分配内存为变量,析构函数,函数init和友元函数显示实现构造函数.然后将此类转换为header和cpp文件,并在其他程序中实现.好的,这是我的Person类:

#include <iostream>
using namespace std;

class Person {   
    char* name;
    int age;
public:   

    Person(){
        int size=0;
        cout << "Give length of char*" << endl;
        cin >> size;
        name = new char[size];      
        age = 0;
    }

    Person::~Person(){
        cout << "Destroying resources" << endl;
        delete [] name;
        delete take_age();
    }  

    friend void show(Person &p);

   int* take_age(){
       return &age;
   }

   char* take_name(){
         return name;      
   }

    void init(char* n, int a) {
        name = n;
        age = a;
    }
}; 

void show(Person *p){
    cout << "Name: " << p->take_name() << "," << "age: " << p->take_age() << endl; 
}

int main(void) {
    Person *p = new Person;  
    p->init("Mary", 25);

    show(p);

    system("PAUSE");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在有了header/implementation部分:
- 我是否需要在头文件/实现文件中引入构造函数?如果是 - 如何?
- 我的show()函数是一个友好的函数.我应该以某种方式考虑它吗?

我已经无法在考试中返回此任务,但我仍然想知道如何实现它.

Tho*_*ews 5

通过切换char *到解决您的许多问题std::string.你会很高兴的.

std::string班负责内存分配的,和释放以及复制.

如果这是作业,说服你的教授std::string用于初学者并保存char *指针部分.还要提醒你的教授,C++语言与C语言不同.这是其中一个领域.