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

Переопределение оператора в классе - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ сравнивание переменной с массивом(чисел) http://www.cyberforum.ru/cpp-beginners/thread341191.html
есть массив int mass = {1,2,3,4,5,6,7,8,9} как сравнить переменную с массивом?
C++ Преобразование строки в целое Может вопрос и глупый, но я все равно не догоняю... В функции что означает 3 параметр: char *_itoa( int value, char *str, int radix ); http://www.cyberforum.ru/cpp-beginners/thread341186.html
C++ Создание бота. Эмуляция клавиатуры, мыши.
Попросили написать простенький бот для одной корейской онлайн игрушки. Сразу столкнулся с проблемой сабжа - игрушка защищена православным GameGuard'ом и напрочь игнорирует Keybd_event, sendkeys etc....
Дейтел. Помощь в решении задач из книги C++
Добрый день. Начал изучение С++ по книге "Как программировать на С++" 5 издание. Установлена IDE Code::Blocks компилятор GCC. Не могу решить задачку 3.11. Где надо модифицировать класс...
C++ классы http://www.cyberforum.ru/cpp-beginners/thread341115.html
Всем привет! Есть такое задание: Создайте программу с классом Team, который включает в себя следующие данные об участниках спортивных соревнований: ФИО игрока, игровой номер, возраст, рост, вес. ...
C++ Сравнение шестнадцатеричных форм Такая задача:считать из потока 2-байтовое число, перевести в 16-ричную систему счисления и сравнить с заданным 16-ричным числом. помогите с решением.очень надо.. подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
11.08.2011, 21:30
lazybiz, а чем строки принципиально в этом плане отличаться будут? Тут мы вместо Foo подсовываем int, который принимает конструктор, там вместо String подсунем char, который тоже будет принимать конструктор.

Добавлено через 20 минут
lazybiz, SatOleg, вот приблизительный пример со строками:
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
#include <iostream>
#include <cstring>
 
class String
{
public:
    String(const char *string):
    m_size(strlen(string)),
    m_string(new char [m_size])
    {
        strncpy(m_string, string, m_size);
    }
 
    String(char c):
    m_size(1),
    m_string(new char [m_size])
    {
        m_string[0] = c;
    }
 
    ~String()
    {
        delete [] m_string;
    }
 
    void print() const
    {
        for (size_t i = 0; i < m_size; ++i)
            std::cout << m_string[i];
    }
 
    friend String operator+(const String &, const String &);
 
    String &operator=(const String &right)
    {
        if (this != &right)
        {
            delete [] m_string;
 
            m_size = right.m_size;
 
            m_string = new char [m_size];
 
            strncpy(m_string, right.m_string, right.m_size);
        }
 
        return *this;
    }
 
private:
    size_t m_size;
    char *m_string;
};
 
String operator+(const String &left, const String &right)
{
    char *sum = new char [left.m_size + right.m_size + 1];
 
    strncpy(sum, left.m_string, left.m_size);
    strncpy(sum + left.m_size, right.m_string, right.m_size);
 
    sum[left.m_size + right.m_size] = '\0';
 
    return String (sum);
}
 
int main()
{
    String s1 = "abc";
    String s2 = "def";
    String s3 = s1 + s2;
 
    s3 = s3 + 'x';
    s3 = 'x' + s3;
 
    s3.print();
 
    return 0;
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru