0

コピー コンストラクターを使用して、入力オブジェクトのディープ コピーを作成する必要があります。私はとても行き詰まっています...

これまでの私のコード:

class stringCS   
{   
public:    
     stringCS();
     stringCS(const stringCS &other);

private:
     char *input;
};


stringCS::stringCS(const stringCS &other)
{
}

ディープコピーを作成するにはどうすればよいですか? for ループを使用して配列内のすべての文字をループ処理し、最後にヌル ターミネータを付けて別の配列にコピーする必要があることはわかっていますが、パラメーターや元の配列がどこから来るのかわかりません。

編集:

コードを教えてくれる人を探しているわけではありません。疑似コード/質問への回答に沿って何かを探しています。パラメータがわからないのでコピーの始め方がわかりません。

4

1 に答える 1

1

これは仕事をするはずです:

class stringCS   
{
private:
    string input;
public:    
    stringCS(const string& other) : input(other)
    {
    }
};

cstrings を使用する必要がある場合は、このスケルトンを使用すると軌道に乗る可能性があります

class stringCS   
{
public:    
    stringCS();
    stringCS(const stringCS &other);
    {
        // a) input is a pointer, allocate enough memory
        // you will need to know the size of other (strlen() + 1)
        ...

        // b) copy character by character from `other.input` to `input` in a loop
        // do not forget the final '\0'
        ...
    }
private:
    char *input;
};
于 2013-03-01T19:36:57.047 に答える