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

Ошибка в деструкторе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Правильное применение функций http://www.cyberforum.ru/cpp-beginners/thread753355.html
Есть задачка одна, студенческая, простая вроде, проблема лишь в том что к ней надо подключить функции, функции вроде понел как их создавать не могу только их правильно применять, просто дайте небольшое разъяснение. тут a = 3.8 ; b = -2.5 ; hx = 0.3 ; x-начальное =1.5 и x - конечное = 5.7; вроде всё.
C++ vc++ 6.0. Найти минимальный среди элементов, лежащих ниже главной диагонали Ввести матрицу размером NxM. Память для массива выделить динамически. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат. Предусмотреть в программе использование функции пользователя.Найти минимальный среди элементов, лежащих ниже главной диагонали. #include <iostream.h> #include <iomanip.h> #include... http://www.cyberforum.ru/cpp-beginners/thread753343.html
C++ Матрица порядка N (упростить/улучшить код)
Задание: Получить целочисленную квадратную матрицу порядка N 1 2 3 ... 3 2 1 0 1 2 ... 2 1 0 ... 0 1 2 ... 2 1 0 1 2 3 ... 3 2 1 Можно ведь проще сделать, посоветуйте пожалуйста. int A;
Класс Прямая(Помогите реализовать построение прямой через 1 точку и параллельную ей прямую) C++
Помогите дописать класс // Методы класса "Прямая" // ------------------------------------------------------------- // конструктор: прямая задается своими коэффициентами Line::Line(double a,double b,double c) { A=a; B=b; C=c; } // конструктор: прямая, которая проходит через две заданные точки
C++ Генерация программы http://www.cyberforum.ru/cpp-beginners/thread753279.html
Есть рабочая программа.Требуется в помощь в компиляции её в Visual Studio 2005 Происходит выход из программы без просмотра результатов.Заранее благодарю. // Гиперкуб.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <fstream> #include <string>
C++ В текстовом файле t записаны буквы латинского алфавита и цифры. Занести в текстовый файл h из текстового файла t только латинские буквы. В текстовом файле t записаны буквы латинского алфавита и цифры. Занести в текстовый файл h из текстового файла t только латинские буквы. подробнее

Показать сообщение отдельно
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
05.01.2013, 15:54     Ошибка в деструкторе
есть базовый абстрактный класс и есть производный от него:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef EMPLOY_H
#define EMPLOY_H
 
class Employee
{
    public:
        Employee(const char*, const char*);
        ~Employee();
        const char* getFirstName() const;
        const char* getLastName() const;
 
        //чистые виртуальные функции абстрактного класса Employee
        virtual float earnings() const = 0;
        virtual void print() const = 0; 
 
    private:
        char *FirstName;
        char *LastName;
};
 
#endif EMPLOY_H
теперь описание

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
#include "stdafx.h"
#include "Employee.h" 
#include <string.h>
#include <assert.h>
 
Employee::Employee(const char *first, const char *last)
{
    FirstName = new char(strlen(first) + 1);
    assert(FirstName != 0);                     //проверка работы new
    strcpy(FirstName, first);
 
    LastName = new char(strlen(last) + 1);
    assert(LastName != 0);                      //проверка работы new
    strcpy(LastName, last);
}
 
Employee::~Employee()
{
    if(FirstName != NULL)
    {
        delete []FirstName;
    }
 
    if(LastName != NULL)
    {
        delete []LastName;
    }
}
 
const char* Employee::getFirstName() const
{
    return FirstName;
}
 
const char* Employee::getLastName() const
{
    return LastName;
}
теперь производный класс

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef BOSS_H
#define BOSS_H
#include "Employee.h" 
 
class Boss:public Employee
{
    public:
        Boss(const char*, const char*, float = 0);
        void setWeeklySalary(float);
        ~Boss();
 
        //виртуальные функции
        virtual float earnings() const;
        virtual void print() const; 
 
    private:
        float WeeklySalary;
};
 
#endif BOSS_H
и описание

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
#include "stdafx.h"
#include "Boss.h" 
#include <iostream>
using namespace std;
 
Boss::Boss(const char *first, const char *last, float s):Employee(first, last)
{
    setWeeklySalary(s);
}
 
Boss::~Boss() {};
 
//установка еженедельного оклада для класса Boss
void Boss::setWeeklySalary(float s)
{
    WeeklySalary = s > 0 ? s : 0;
}
 
//наличие заработной платы
float Boss::earnings() const
{
    return WeeklySalary;
}
 
//печать имени служащего из класса Boss
void Boss::print() const
{
    cout << "\nАдминистратор: " << getFirstName() << "\t" << getLastName();
}
Теперь мейн:

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
#include "stdafx.h"
#include "Employee.h" 
#include "Boss.h" 
#include "ComissionWorker.h"
#include "PieceWorker.h"
#include "HorlyWorker.h"
#include "Boss.h" 
#include <iostream>
#include <iomanip>
#include <windows.h>  
using namespace std;
 
void _tmain()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    //установка выходного формата
    cout << setiosflags(ios::showpoint) << setprecision(2);
 
    Employee *ptr;
 
    Boss b("John", "Smith", 800);
    ptr = &b;                       //указатель базового класса на объект производного
 
    ptr -> print();                 //динамическое связывание
    cout << " заработал $ " << ptr -> earnings();
            
    b.print();                      //статическое связывание
    cout << " заработал $ " << b.earnings();
 
    cout << "\n\n";
}
выдает ошибку HEAP CORRUPTION DETECTED: after Normal block(#178) at 0x00398CA0. CRT detected that the application
wrote to memory after end on heap buffer. Заранее благодарю!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru