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

наследование С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевести задачу на C++ http://www.cyberforum.ru/cpp-beginners/thread383776.html
Помогите перевести данную программу на c++ вся трудность в том что не знаком с синтаксисом С++ http://s017.***********/i444/1111/26/171e3a9bb4b9.png
C++ Устная задачка) Помогите пожалуйста. Мне нужно построить область, удовлетворяющую неравенствам: x<=2, y<x, y>=1/x. И самое смешное в том, что я не могу просчитать это математически))) помогите пожалуйста!!! Как... http://www.cyberforum.ru/cpp-beginners/thread383758.html
MS VISUAL C++ и Builder C++ C++
Всем привет, я программирую на delphi, решил начать изучать C++, я выучил самые основы на dev С++, тоесть писал консольные программы :) Теперь хочу перейти за кокой нить компилятор посерьезнее...
задача C++
В строке записано латинскими буквами нестрого фамили, имя и отчество через пробел (Имя может стоять и в начале и в конце и в середине). Требуется написать программу, определяющую положение...
C++ простая задачка http://www.cyberforum.ru/cpp-beginners/thread383723.html
Требуется написать программу, определяющую количество символов до точки. Точка в строке одна.
C++ Есть ли в студии аналог FloatToStr? Есть ли в студии аналог FloatToStr? подробнее

Показать сообщение отдельно
Lennadij
3 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 45

наследование С++ - C++

14.11.2011, 18:35. Просмотров 2706. Ответов 10
Метки (Все метки)

Здравствуйте) опять обращаюсь к вам за помощью))
Дано задание:
Описать базовый класс CStr – строка. Описать производный от СStr класс CSStr – шестнадцатеричная строка. Строки данного класса могут содержать только шестнадцатиричные символы. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, строка принимает нулевое значение.Содержимое данной строки рассматривается как знаковое шестнадцатеричное число. Класс CSStr содержит следующие методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор копирования; деструктор, метод, преобразующий данную строку в целое десятичное число, метод изменение знака на противоположный (перевод числа в дополни-тельный код). Переопределить следующие операции: присваивание (=); сложение (+) — арифметическая сумма строк; операция (==) — проверка на равенство. Написать демонстрационную программу.

С базовым классов вроде как то разобралась. А вот с производным ни как(
Вот код базового класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma once
#ifndef __Str_H
#define __Str_H
 
class CStr
{protected: 
    char* s;//Поле для хранения строки
    int len;//Поле для хранения длины сроки 
public:
    CStr();//Kонструктор без параметров
    CStr(char*);//Конструктор создания строки, равной заданной С- строке
    CStr(const CStr&);//Kонструктор копирования
    CStr& operator=(const CStr&);
    bool operator ==(CStr &);
    void empty();
    char * get_str()  const {return s;} //Метод  получения строки
    ~CStr(){delete[]s;}//Деструктор
    int get_len() const {return len;}// Метод получения длины строки
    
};
#endif
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
#include "StdAfx.h"
#include "Str.h"
#include <iostream>
#include <iomanip>
using namespace std;
 
// Конструктор создания пустой строки
CStr::CStr():len(0)
{s=new char;*s='\0'; cout<<"\nContructor1";}
 
// Конструктор создания строки, равной заданной С- строке
CStr::CStr(char* a)
{s=new char[len=strlen(a)];
    strcpy(s,a);
    cout<<"\nContructor2";
}
 
// Конструктор копирования
CStr::CStr(const CStr& a)
{s=new char[len=a];strcpy(s,a.s);cout<<"\nContructor3 ";}
 
// Операция присваивания
CStr& CStr::operator = (const CStr & a)
{
    if (&a==this)  return *this;
    if (len) delete []s;
    s=new char [len=a];
    strcpy(s,a.s);
    cout<<" \nDONE == ";
    return *this;
}
 
// Операция сравнения строк
bool CStr::operator ==(CStr & st)
{
if (strcmp (s, st.s)==0) return true;
return false;
}
 
// Метод, делающий строку пустой
void CStr::empty()
{ if (len)   
    { len = 0; delete []s; s = new char; *s= '\0';} 
}
 
// Операция записи в поток вывода на экран
ostream& operator<<(ostream& a, CStr& x)
{return a<<x.s;}
P.S. базовый класс я хоть в том направлении описала?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru