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()函数是一个友好的函数.我应该以某种方式考虑它吗?
我已经无法在考试中返回此任务,但我仍然想知道如何实现它.
通过切换char *到解决您的许多问题std::string.你会很高兴的.
该std::string班负责内存分配的,和释放以及复制.
如果这是作业,说服你的教授std::string用于初学者并保存char *指针部分.还要提醒你的教授,C++语言与C语言不同.这是其中一个领域.