2016-03-31 19 views
2

オペレータのオーバーロードについて学習し始めたばかりで、コードの使い方を学習するだけでした。だから、私は2つの文字を追加するコードを書いた。例: '#' + '%' = 'H'(ASCII値が追加されたため)ここで'+'演算子がC++でオーバーロードされる

は私のコードです:

#include <iostream> 

using namespace std; 

class Strings { 
//everything is public 
public: 
    char str; 
    //empty constructor 
    Strings(); 
    Strings(char); 
    //operator takes in an object of Strings 
    Strings operator+(Strings); 
}; 

Strings::Strings() 
{} 

//constructor 
Strings::Strings(char a) { 
    str = a; 
} 

//aso is "another string object" 
//makes new empty object "brandNew" 
//brandNew is the two characters added together 
//returns object brandNew 
Strings Strings::operator+(Strings aso) { 
    Strings brandNew; 
    brandNew.str = str + aso.str; 
    return brandNew; 
} 

int main() { 
    Strings a('#'); 
    Strings b('%'); 
    Strings c; 

    //now, we can use + operator to add characters 
    c = a + b; 
    cout << c.str << endl; 
    return 0; 
} 

私は2つの文字列を追加したい場合はどう?私は、入力

Strings a("###"); 
Strings b("%%%"); 

を作ると私は出力が

HHH 

どのように私は2つの文字列を追加するために自分のコードを変更しますか?になりたい場合は私はの文字の型宣言のすべてをの文字列に変更することから始めました。私は、両方の入力の各文字を反復するために、演算子関数の中でforループを作成しなければならないと考えています。しかし、私はそれの構文について混乱し、その実装方法も混乱しています。どんな助けや説明もありがとう!

+0

ゼロ終了文字配列にcharを割り当てます。あなたはchar * strを持っているはずです。インスタント、または文字列[MAX_SIZE]。 –

+0

どのように文字列を追加しますか?あなたの入力は文字列であり、1文字を追加する必要がありますか? 'Strings'は一つのデータメンバーしか持っていません。それは' char'です。それを 'string'に変更すると、この追加はどこに保存されますか?投稿する前に考えてください。 – anukul

+0

私は上記の質問を編集しました。出力を文字列 "HHH"にしたい – ss1111

答えて

0

私はクラスを宣言する助けをします。

class Strings { 
private: 
    char* str; 
    unsigned int length; 
    unsigned int size; 
public: 
    //constructor 
    Strings(); 
    ~Strings(); 
    Strings(const char*); 
    Strings(const Strings&); 
    //operator 
    Strings operator+(const Strings&); 
    Strings operator+(const char*); 
    Strings operator=(const Strings&); 
    Strings operator=(const char*); 
    Strings operator+=(const Strings&); 
    Strings operator+=(const char*); 
    ///Accessors 
    const char* GetStr()const; 
    unsigned int GetLength()const; 
    unsigned int GetSize()const; 
}; 
+0

少なくともこの関数を実装して、基本的な文字列クラスを持ち、常に割り当てられたメモリを気にし、指定された文字列を保存するのに十分な領域があるかどうかを調べる必要があります –

関連する問題