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

Наследование, возврат по ссылке.. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Посоветуйте IDE для начинающего http://www.cyberforum.ru/cpp-beginners/thread45843.html
Доброго времени суток! Я только начинаю работать с С++, посоветуйте, пожалуйста, какие программы лучше использовать, включая все последние версии (то есть не в духе "новичку и это сойдет":)), чтобы я был так сказать, "вооружен до зубов":) Также посоветуйте с какой книги лучше начать. Всем буду благодарен за советы! :)
C++ Чтение длинных целых Помогите, пожалуйста, правильно организовать ввод длинных целых как строк. При коде #include "stdafx.h" #include <iostream> #define I(x) char*x=new char; //#define L(s,r) for(r=0;s!='\0';++r); int main() { I(x); I(y); I(z); //char a,b,c,*u,d; http://www.cyberforum.ru/cpp-beginners/thread45810.html
Программная среда для программирования на C# C++
Сегодня решил начать изучать С#, только не пойму, откуда можно скачать программную среду для программирования на C#. Есть на сайте www.microsoft.com, но там неполная версия, а для ознакомления. Скажите, пожалуйста, где можно скачать эту программную среду для C#?
Сортировка двумерного массива по столбцам C++
Всем привет! Начала изучать С++ совсем недавно, и вот столкнулась с трудностями(( задачка-то вроде несложная... но вот три дня бьюсь, не могу найти где тут косяк, прямо отчаялась уже... собстно условие: назовем характеристикой столбца сумму его нечетных отрицательных элементов. переставить столбцы в соответствии с характеристиками. вот что у меня вышло: #include <stdlib.h> #include...
C++ Отображение устройств http://www.cyberforum.ru/cpp-beginners/thread45791.html
Привет! Нужна помощь!:help: Нужно написать программу которая определяет наличие устройст (жесткие диски, приводы, флешки), и просто выводить их на экран (например Windows (C:), Локальный диск (F:) и т.д.). И если вытащить флешку, программа должна сразу же это отобразить.
C++ __asm вставка Есть проблема с асм-вставкой нужно возвратить значение в регистр eax. Проблема написать аналог макроса на С++. alloc MACRO bytecount invoke GlobalAlloc,GMEM_FIXED or GMEM_ZEROINIT,bytecount EXITM <eax> ENDM free MACRO hmemory подробнее

Показать сообщение отдельно
insolent
 Аватар для insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
02.08.2009, 17:28     Наследование, возврат по ссылке..
Есть такое
задание
В некоторых компьютерных языках, таких как Visual Basic, есть операции,
с помощью которых можно выделить часть строки и присвоить ее другой строке.
(В стандартном классе string предложены различные подходы.) Используя
наследование, добавьте такую возможность в класс Pstring из упражнения 2. В новом
производном классе Pstring2 разместите три новых функции: left(), mid(), right().

s2.left ( s1, n )
в строку s2 помещается n самых левых символов строки s1

s2.mid ( s1, s, n )
в строку s2 помещаются n символов из строки начиная с символов номер s

s2.right ( s1, n )
В строку s2 помещаются n самых правых символов строки s1

Вы можете использовать цикл for для копирования символ за символом подходящих
частей строки s1 во временный объект класса Pstring2, который затем их возвратит.
Для получения лучшего результата используйте в этих функциях возврат по ссылке,
чтобы они могли быть использованы с левой строны знака "равно" для изменения части
существующей строки.

Я не могу понять, как реализовать
возврат по ссылке, чтобы они могли быть использованы с левой строны знака
"равно" для изменения части существующей строки
Подсказывать, как это можно сделать.
Вот мой
"каркас"
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
#include <iostream> 
#include <string>
#include <Windows.h>
using namespace std;
//////////////////////////////////////////////////////////////////////////
class String //базовый класс 
{ 
protected:  
    enum {SZ = 255 }; //размер всех объектов String 
    char str [SZ]; //содержит С-строку 
public: 
    String() //конструктор без аргументов 
    {
        str [0] ='\0';
    } 
    String(char* s) //конструктор c одинм аргументом
    {
        strcpy(str,s);
    } 
    void display()const //вывести String 
    {
        cout << str;
    } 
    operator char*() //функция преобразования 
    {
        return str;
    } //преобразовать String в C-string 
};
//////////////////////////////////////////////////////////////////////////
class Pstring :public String //порожденный класс 
{ 
public: 
    Pstring():String()
    {}
    Pstring(char* s);
};
//------------------------------------------------------------------------
Pstring::Pstring(char* s) //конструктор для Pstring 
{ 
    int n;
    n = ((strlen(s) > SZ-1) ? SZ-1 : strlen(s));
    strncpy(str,s,n);
    str[n] = '\0';
}
//////////////////////////////////////////////////////////////////////////
class Pstring2 : public Pstring
{
public:
    Pstring2():Pstring()
    {}
    Pstring2(char* s):Pstring(s)
    {}
    Pstring2& left(Pstring2 s1,int n);
    Pstring2& mid(Pstring2 s1,int s,int n);
    Pstring2& right(Pstring2 s1,int n);
    void display()
    {
        Pstring::display();
    }
    operator char*()
    {
        return str;
    }
};
//////////////////////////////////////////////////////////////////////////
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Pstring2 s1 = "Это очень-очень длинная строка, которая, возможно,да, нет. точно, - превысит размер, ограниченный SZ";
    s1.left() = "Добавка. "; 
    cout <<"\nsl=";
    cout << static_cast<char*>(s1) << endl;
    Pstring2 s2 = "А это коротенькая строка";
    s2.left() = "Добавка. ";
    cout <<"\ns2=";
    s2.display();
    cout << endl;
    getchar();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru