Форум программистов, компьютерный форум, киберфорум
Наши страницы

свой класс string - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Умножение векторов http://www.cyberforum.ru/cpp-beginners/thread804030.html
Помогите, пожалуйста, у меня есть два вектора-столбца q1 и q2, как мне их перемножить??!! Добавлено через 25 минут Так будет правильно?? ... float x=0; for(i=0;i<4;i++) x+=q1*q2; ...
C++ Списки и Очереди Помогите реализовать следующее задание через Списки и Очередь. "В числовой последовательности вставить после каждого простого числа удвоенное среднее геометрическое всех элементов... http://www.cyberforum.ru/cpp-beginners/thread804019.html
C++ Стоит ли бросать C++
Народ всем привет вот я сейчас задался вопросом стоит ли мне продолжать изучать C++(учу 2.5 месяца но сейчас испытываю трудности, язык первый) если я хочу в дальнейшем работать в вебе?(просто кто-то...
Метод дружественного класса C++
Нужно сделать такую ​​задачу, но дойшовшы к этому: выбрать заданное число N абитуриентов, имеющих высокий средний балл (метод дружественного класса). задумался, это как? Объясните как это должно...
C++ Программа взаимодействует с классом исключительно через интерфейс. Однажды класс меняется и меняется его хидер. Надо ли перекомпилировать всю программ http://www.cyberforum.ru/cpp-beginners/thread803979.html
Программа взаимодействует с классом исключительно через интерфейс. Однажды класс меняется и меняется его хидер. Надо ли перекомпилировать всю программу? То есть я однажды задавал подобный вопрос,...
C++ Получить новую матрицу, переставляя ее блоки размера nxn Прошу помощи с написанием программы. Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера nxn. (см. рисунок). Желательно с применением функций (... подробнее

Показать сообщение отдельно
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231

свой класс string - C++

09.03.2013, 17:29. Просмотров 970. Ответов 13
Метки (Все метки)

Есть два вопроса: почему компилятор ругает вот это s = str + str2;? Хотя догадываюсь почему, скорее всего у меня не так реализован оператор контантенации +. И вот второй вопрос: как правильно реализовать оператор +?
main.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include "String.h"
 
using namespace std;
 
int main()
{
    String str("Hello, "), str2("World!"),s; 
    //s = str + str2;
    cout<<s;
 
    system("pause>0");
    return 0;
}

String.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "String.h"
#include <iostream>
 
using namespace std;
 
String* String::operator+(const String &tmp)
{
    String* temp;
    temp = new String[size + tmp.size + 1];
    temp->size = size + tmp.size;
    strcpy(temp->sPtr,sPtr);
    strcat(temp->sPtr,tmp.sPtr);
 
    return temp;
}
 
String &String::operator=(const String &tmp)
{
      if(&tmp != this){
                delete [] sPtr;
                size = tmp.size;
                sPtr = new char[size+1];
                strcpy(sPtr,tmp.sPtr);
          }
      return *this;
}
 
String::~String()
{
      delete [] sPtr;
}
 
String::String(const String &copy)
{
      size = copy.size;
      sPtr = new char[size+1];
      strcpy(sPtr,copy.sPtr);
}
 
String::String(const char *s)
{
      size = strlen(s);
      sPtr = new char[size+1];
      strcpy(sPtr,s);
}
 
int String::operator==(const String &right) const
{
    return strcmp(sPtr,right.sPtr)==0;
}
 
int String::operator!=(const String &right) const
{
    return strcmp(sPtr,right.sPtr)!=0;
}
 
int String::operator<(const String &right) const
{
    return strcmp(sPtr,right.sPtr)<0;
}
 
int String::operator>(const String &right) const
{
    return strcmp(sPtr,right.sPtr)>0;
}
 
int String::operator>=(const String &right) const
{
    return strcmp(sPtr,right.sPtr)>=0;
}
 
int String::operator<=(const String &right) const
{
    return strcmp(sPtr,right.sPtr)<=0;
}
 
ostream &operator<<(ostream &out, const String &S)
{
    out<<S.sPtr;
 
    return out;
}

String.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef String_h
#define String_h
 
#include <iostream>
 
using namespace std;
 
class String
{
    friend ostream &operator<<(ostream &,const String &);
public:
    String(const char * = "");
    String(const String &);
    ~String();
    /*---------------------------------*/
    int operator==(const String &) const;
    int operator!=(const String &) const;
    int operator<(const String &) const;
    int operator>(const String &) const;
    int operator>=(const String &) const;
    int operator<=(const String &) const;
    /*----------------------------------*/
    String &operator=(const String&);
    String* operator+(const String&);
private:
    char* sPtr;
    int size;
};
 
#endif
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru