尽管通过构造函数初始化类私有变量为什么不打印它的值?

时间:2012-12-29 11:46:16

标签: c++

我创建了一个String类,它有两个私有成员int长度和一个字符指针。 有两个构造函数初始化这些成员。 我的问题为什么s1.print()不能在我的代码中工作?

    #include <iostream>
    #include <string.h>
    using namespace std;

    class String {
    int length;
    char *ptr;
    public:
String(int N, char s[]) {
    ptr = new char[N];
    strcpy(s, ptr);
}
String(int N) {
    ptr = new char[N];
}
String concat(String s2) {
    String result(s2.length+length, strcat(ptr, s2.ptr));
}
void print(void)
{
    cout<<ptr<<endl;
}
};

int main()
{
char temp[50];
cin >> temp;
String s1(strlen(temp)+1, temp);
//String s2(strlen(temp)+1, temp);
s1.print();
//s1.concat(s2);
//s1.print();

return 0;
}

1 个答案:

答案 0 :(得分:0)

为了打印char *,您需要将其转换为字符串而不是打印。 另一件事我建议您的数组大小为N + 1并在ptr [N] ='\ 0'

处添加NULL终止