簡體   English   中英

C ++運算符+ =重載結構字符串

[英]c++ operator+= overloading struct string

在下面的程序中調用運算符+ =會產生分段錯誤。 我不知道為什么。

#include <string>
struct foo
{
    std::string name;
    foo operator+=(  foo bar )
    {}
};
int main()
{
    foo a,b;
    a += b;
    return 0;
}

沒有return語句可能會導致分段錯誤。 您的實現應如下所示:

foo& operator+=( const foo& bar )
 {
   name += bar.name;
   return *this;
 }

運算符+ =不需要返回值:

struct Test
{
    std::string str;
    void operator += (const Test& temp);
};

void Test::operator += (const Test& temp)
{
    str += temp.str;
    return;
}

int main()
{
    Test test, test_2;
    test.str = "abc";
    test_2.str = "def";
    test += test_2;
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM