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

Ошибка при наследовании? - C++

Восстановить пароль Регистрация
 
Nazgul94
1 / 1 / 0
Регистрация: 22.11.2012
Сообщений: 24
12.08.2013, 19:19     Ошибка при наследовании? #1
Программа компилируется, но консоль не выдает информацию. Связано ли это как то с переполнением буфера?
Программа небольшая укажите пожалуйста на ошибку. Заранее спасибо.

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
#include <iostream>
#include <locale>
#include <string>
using namespace std; 
///////////////////////////////////////////////////////////
class String
{ 
protected: 
    static const int SZ = 80;  // максимальный размер строки
    char str[SZ];    // сама строка
public: 
    String()   // конструктор без параметров
     { str[0] = '\0'; }
    String(char s[])  // конструктор с одним параметром
     { strcpy(str, s); }
    void display()  // показ строки
     { cout << str; }
    operator char*()   // функция преобразования
      { return str; }   // преобразовать String в C-string
};
 
class Pstring : public String
{
public:
    Pstring(): String()
    { }
    Pstring(char s[])
    {  int j;
       if(strlen(s) > SZ - 1) 
        {for(j = 0; j = SZ - 1; j++)
         str[j] = s[j];
       str[j] = '\0';}
       else 
        String(s);
    }
};
///////////////////////////////////////////////////////////
int main()
{ setlocale(LC_ALL,"RUS");
Pstring p = "Эта строка имеет очень большую длину и мы можем быть уверены, что она не уместится в отведенный буфер, что приведет к непредсказуемым последствиям.";
cout << "\np = "; p.display();
 
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2013, 19:19     Ошибка при наследовании?
Посмотрите здесь:

C++ Ошибка при наследовании
C++ Ошибка при наследовании
C++ Ошибка при наследовании
Ошибка в наследовании C++
C++ Ошибка при наследовании класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.08.2013, 19:27     Ошибка при наследовании? #2
Цитата Сообщение от Nazgul94 Посмотреть сообщение
C++
1
for(j = 0; j = SZ - 1; j++)
бесконечный цикл
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.08.2013, 19:28     Ошибка при наследовании? #3
Это что за условие в цикле?
C++
1
{for(j = 0; j = SZ - 1; j++)
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.08.2013, 20:28     Ошибка при наследовании? #4
Цитата Сообщение от Nazgul94 Посмотреть сообщение
C++
1
2
else 
     String(s);
что это за попытка явного вызова конструктора?

Добавлено через 5 минут
Nazgul94, ты понимаешь, какое действие производит эта строчка?
Nazgul94
1 / 1 / 0
Регистрация: 22.11.2012
Сообщений: 24
12.08.2013, 21:10  [ТС]     Ошибка при наследовании? #5
мда...иногда поражаюсь какой я тупой...спс всем

Добавлено через 1 минуту
Kuzia domovenok, вызывается конструктор родительского класса
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.08.2013, 21:14     Ошибка при наследовании? #6
Цитата Сообщение от Nazgul94 Посмотреть сообщение
вызывается конструктор родительского класса
Для какого объекта?
Nazgul94
1 / 1 / 0
Регистрация: 22.11.2012
Сообщений: 24
12.08.2013, 21:21  [ТС]     Ошибка при наследовании? #7
для обьекта "p" класса Pstring
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.08.2013, 21:46     Ошибка при наследовании? #8
Цитата Сообщение от Nazgul94 Посмотреть сообщение
для обьекта "p" класса Pstring
Если для объекта p, то только в списке инициализаторов можно такое делать.
Nazgul94
1 / 1 / 0
Регистрация: 22.11.2012
Сообщений: 24
12.08.2013, 22:34  [ТС]     Ошибка при наследовании? #9
ммм.... и в правду не работает, когда строка меньше 80 символов.... хотя в Лафоре именно так и сказано делать
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.08.2013, 03:11     Ошибка при наследовании? #10
Цитата Сообщение от Nazgul94 Посмотреть сообщение
хотя в Лафоре именно так и сказано делать
Название книги и страницу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2013, 09:05     Ошибка при наследовании?
Еще ссылки по теме:

C++ Ошибка в наследовании
C++ Ошибка: undefined reference to при наследовании класса
C++ Ошибка памяти. Передача массива при наследовании

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Nazgul94
1 / 1 / 0
Регистрация: 22.11.2012
Сообщений: 24
13.08.2013, 09:05  [ТС]     Ошибка при наследовании? #11
"ООП в С++" Лафоре стр. 874
Yandex
Объявления
13.08.2013, 09:05     Ошибка при наследовании?
Ответ Создать тему
Опции темы

Текущее время: 02:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru