#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace std;
class myclass
{
char *text;
public:
myclass(char *txt) { text = txt; }
myclass() { text = "default"; }
void show() { cout << text << endl; }
myclass operator+(myclass ob)
{
myclass temp;
temp.text = text;
strcpy(temp.text, ob.text);
return temp;
}
};
int main()
{
myclass ob1("My name ");
myclass ob2("is Lexus.");
myclass ob3;
ob3 = ob1 + ob2;
ob3.show();
return 0;
}
Вопрос по перегрузке оператора +
Народ, что я не так сделал?
+ убедиться, что буфер под текст, куда копируешь, достаточного размера
а разве char *text; не выделяет достаточно места?
Цитата: lexus05
а разве char *text; не выделяет достаточно места?
он вообще ничего не выделяет
а как лучше выделить память, какой тип данных использовать для текстов на c++?
Цитата: lexus05
а как лучше выделить память, какой тип данных использовать для текстов на c++?
std::string и не мучайся, там уже все операторы перегружены
мне это необходимо знать для обучения.
Цитата: lexus05
мне это необходимо знать для обучения.
ну выделяй значит предварительно буфер, размером на 1-ю строку и 2-ю, складывай в этот буфер эти строки, удаляй массив text, а потом присваивай ему указатель на свой новый буфер.
Кстати, передовать объекты твоего класса в оператор по значению в данном случае тоже не очень хорошо. Передавай хоть по константной ссылке чтоли.
Цитата: aks
Кстати, передовать объекты твоего класса в оператор по значению в данном случае тоже не очень хорошо. Передавай хоть по константной ссылке чтоли.
Да тут весь код - просто потенциальный источник багов.
На конструкторы аж смотреть страшно.. =/
Цитата: Dart Bobr
Да тут весь код - просто потенциальный источник багов.
На конструкторы аж смотреть страшно.. =/
На конструкторы аж смотреть страшно.. =/
Учится человек. Чего наезжать то?
большой плюс, что не пишет "памагитя!!!"
Сделай так, сделай этак, и не одного примера. :)))(имеется ввиду кодинга)...
поиск гуглом по голове не дадут
за