Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/32: Рейтинг темы: голосов - 32, средняя оценка - 4.75
 Аватар для LineStown
72 / 71 / 8
Регистрация: 04.08.2010
Сообщений: 434

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

04.08.2010, 17:35. Показов 6862. Ответов 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;
}
Поделитесь мыслью, что не так.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.08.2010, 17:35
Ответы с готовыми решениями:

Не вызывается нужный конструктор базового класса
Здравствуйте. Я пока в процессе изучения С++. Имеется следующая структура классов: Базовый: Person, расширяющие его: Student и...

При создании класса конструктор вызывается 2 раза, затем вызывается деструктор о_О
Вот такой кодclass A { public: A(){} virtual ~A(){} }; class C { public:

Вызвать конструктор производного класса без конструктора базового класса
Здравствуйте! У меня есть базовый класс треугольник и производный класс равносторонний треугольник.В конструкторе треугольника вводятся...

44
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.07.2012, 12:00
Студворк — интернет-сервис помощи студентам
В 49 строке можно и просто:
C++
1
constructor(s);
Добавлено через 25 минут
И, если не трудно, поясните эту конструкцию:
C++
1
2
3
4
operator char*()
        {
            return str;
        }
Она здесь зачем?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
14.07.2012, 12:03
alsav22, Оператор неявного преобразования к типу char*, рекомендуется использовать крайне аккуратно и лучше использовать либо именованные функции преобразования, либо explicit операторы преобразования типа (С++11).
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.07.2012, 12:33
Цитата Сообщение от ForEveR Посмотреть сообщение
alsav22, Оператор неявного преобразования к типу char*, рекомендуется использовать крайне аккуратно и лучше использовать либо именованные функции преобразования, либо explicit операторы преобразования типа (С++11).
Я не понял, зачем задано явное преобразование в этом коде? Где здесь объект приводится к указателю на char (может ТС считает, что здесь: Pstring s1 = "0123456789";)? Или что, его всегда нужно задавать?
0
0 / 0 / 0
Регистрация: 20.12.2011
Сообщений: 5
14.07.2012, 18:27
Цитата Сообщение от alsav22 Посмотреть сообщение
Я не понял, зачем задано явное преобразование в этом коде? Где здесь объект приводится к указателю на char (может ТС считает, что здесь: Pstring s1 = "0123456789";)? Или что, его всегда нужно задавать?
Это упражнение Сказано: "возьмите этот класс..." Вот я и взял
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.07.2012, 18:38
Цитата Сообщение от VerDicT Посмотреть сообщение
Это упражнение Сказано: "возьмите этот класс..." Вот я и взял
Понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2012, 18:38

Наследование: почему вызывается метод базового класса, а не производного?
Всем привет, такой вопрос, почему вызывается в данном коде метод базового класса, а не производного (без указания ключевого слова virtual...

Конструктор базового класса
Такая проблема: имеется конструктор базового класса ErrorDataErrorData(ErrorCod cod, bool isFatal);, где ErrorCod вот такая...

Конструктор базового класса
Привет, друзья, есть, к примеру, такие классы: class Base { public: int x; Base() { } };

Будет ли утрачена память, когда конструктор копирования вызывается для уже существующего объекта класса?
class A { char * v; A(); ~A(); A(const A &amp;obj); } ///////////////////// A::A() {

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор)
class Test { int i; public: void test(int i) { this -&gt; i = i; } }; Конструктор Test::Test всегда вызывается...


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

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Новые блоги и статьи
Теория всего 6. Судьба неотвратима?
anaschu 21.07.2026
Математическое доказательство Судьбы: Точка бифуркации в едином тензорном ядре Модели ВсегоСвежее обновление питоновского ядра «Soil Chemistry 2. 0» дало нам неопровержимое математическое. . .
Теория всего 5. ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли
anaschu 21.07.2026
Единое ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли Главная задача «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы» (аттракторов. . .
сукцессия 37. Внедрил дипсик в свой оркестр из ИИ. У него закончилось пространство чата, потому опубликую выводы из его работы здесь
anaschu 21.07.2026
==================================================================== КОНТЕКСТ: Моделирование микоризной сукцессии (AM → ECM) ==================================================================== . . .
сукцессия 36. Делаю прогоны модели около порога бифуркации (превращения эндо микоризы в экто микоризу)
anaschu 21.07.2026
СУКЦЕССИЯ МИКОРИЗ: КАК МАТЕМАТИКА ОБЪЯСНЯЕТ ПОДЗЕМНУЮ ВОЙНУ Мы привыкли думать, что лес — это деревья. А грибы — это то, что мы собираем в корзинку осенью. Но если заглянуть под землю, окажется,. . .
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 21.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного. 1. Почему показания термометра заряжены целью? Цель заложена в самом. . .
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru