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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 5.00
LineStown
 Аватар для LineStown
65 / 65 / 3
Регистрация: 04.08.2010
Сообщений: 417
Завершенные тесты: 1
#1

Не вызывается конструктор базового класса - C++

04.08.2010, 17:35. Просмотров 3359. Ответов 44
Метки нет (Все метки)

Доброго времени суток.
У меня проблема:в производном классе не вызывается конструктор базового класса.
Думаю описывать класс не стоит, т.к. он простейший.

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<cstring>
using namespace std;
class String
{
protected:
    enum {SZ=80};
    char str[SZ];
public:
    String()
    {
        str[0]='\0';
    }
    String(char s[])
    {
        strcpy(str,s);
    }
    void display()const
    {
        cout << str << endl;
    }
};
class Pstring:public String
{
public:
    Pstring(char s[]);
};
Pstring::Pstring(char s[])
{
    if(strlen(s)>SZ-1)
    {
        for(int j=0;j<SZ;j++)
        str[j]=s[j];
        str[SZ-1]='\0';
    }
    else
        String(s);  //Вызов конструктора с параметром не проиходит. 
                                     //Результат пустая строка
};
int main()
{
    Pstring g="Qwertythdththdhdhtdh";
    g.display();
    return 0;
}
Поделитесь мыслью, что не так.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2010, 17:35     Не вызывается конструктор базового класса
Посмотрите здесь:

C++ Наследование(Не вызывается конструктор)
Будет ли утрачена память, когда конструктор копирования вызывается для уже существующего объекта класса? C++
C++ Конструктор базового класса
Не вызывается нужный конструктор базового класса C++
C++ При создании класса конструктор вызывается 2 раза, затем вызывается деструктор о_О
Конструктор вызывается 2 раза C++
Конструктор базового класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.07.2012, 12:00     Не вызывается конструктор базового класса #41
В 49 строке можно и просто:
C++
1
constructor(s);
Добавлено через 25 минут
И, если не трудно, поясните эту конструкцию:
C++
1
2
3
4
operator char*()
        {
            return str;
        }
Она здесь зачем?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
14.07.2012, 12:03     Не вызывается конструктор базового класса #42
alsav22, Оператор неявного преобразования к типу char*, рекомендуется использовать крайне аккуратно и лучше использовать либо именованные функции преобразования, либо explicit операторы преобразования типа (С++11).
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.07.2012, 12:33     Не вызывается конструктор базового класса #43
Цитата Сообщение от ForEveR Посмотреть сообщение
alsav22, Оператор неявного преобразования к типу char*, рекомендуется использовать крайне аккуратно и лучше использовать либо именованные функции преобразования, либо explicit операторы преобразования типа (С++11).
Я не понял, зачем задано явное преобразование в этом коде? Где здесь объект приводится к указателю на char (может ТС считает, что здесь: Pstring s1 = "0123456789";)? Или что, его всегда нужно задавать?
VerDicT
0 / 0 / 0
Регистрация: 20.12.2011
Сообщений: 5
14.07.2012, 18:27     Не вызывается конструктор базового класса #44
Цитата Сообщение от alsav22 Посмотреть сообщение
Я не понял, зачем задано явное преобразование в этом коде? Где здесь объект приводится к указателю на char (может ТС считает, что здесь: Pstring s1 = "0123456789";)? Или что, его всегда нужно задавать?
Это упражнение Сказано: "возьмите этот класс..." Вот я и взял
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2012, 18:38     Не вызывается конструктор базового класса
Еще ссылки по теме:

Наследование: почему вызывается метод базового класса, а не производного? C++
C++ Не вызывается конструктор копии
Не вызывается конструктор C++
C++ Какой конструктор вызывается ?
Вызывается не тот конструктор C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.07.2012, 18:38     Не вызывается конструктор базового класса #45
Цитата Сообщение от VerDicT Посмотреть сообщение
Это упражнение Сказано: "возьмите этот класс..." Вот я и взял
Понял.
Yandex
Объявления
14.07.2012, 18:38     Не вызывается конструктор базового класса
Ответ Создать тему
Опции темы

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