试图通过构造函数初始化String类。我得到了奇怪的输出

时间:2016-04-13 16:39:30

标签: c++ c++11

#include<iostream>
using namespace std;
class String {
public:
char *q;
int len;
String() { q = new char[0]; }
String(char * p) {
    for (int i = 0;*p!=00; i++) {
        len++;
        p++;
    }
    q = new char[len];
    for (int i = 0; i < len; i++) {
        *q = *p;
        p++; q++;
    }
    for (int i = 0; i < len; i++) {
        cout << *q;
        q++;
    }
}

};
void main() {
String s1;
String s2("My name is navdeep.");
system("PAUSE");  
}      

enter image description here

为什么会发生这种情况我不知道,我已经尝试在for循环中包含cout,其中len正在增加。结果很好。但复制时出了点问题。

1 个答案:

答案 0 :(得分:1)

您没有重置指针。 p和q应指向每个循环之前的数组的开头。