我得到了一个功课,可以将对象传递给成员函数,并在C ++中使用构造函数(必须遵循动态内存分配来存储值)。检查下面给出的代码。
#include<iostream>
using namespace std;
class room
{
char *a;
public:
room(string e)
{
a = new char[e.length()];
string a(e);
}
friend void show(room);
};
void show(room z)
{
cout << z.a;
}
int main()
{
string c;
cout << "Enter: ";
cin >> c;
room A(c);
show(A);
}
现在,我希望在编译代码后,必须通过show()打印作为输入的字符串。
如何修改代码以获取show()??
的输出答案 0 :(得分:0)
您的代码中存在几个问题:
修复此问题会产生类似的结果:
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
class room
{
char *a;
public:
room(string e) : a(strdup(e.c_str())) {};
room(const room &); // not implemented copy construtor
room & operator=(const room &); // not implemented copy operator
~room() { free(a); };
friend void show(const room &);
};
void show(const room & z)
{
cout << z.a;
}
int main()
{
string c;
cout << "Enter: ";
cin >> c;
room A(c);
show(A);
}
但正如评论中所建议的那样,使用std :: string存储值是char *的更好替代方法。