Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2011, 20:00   #1
iKarma
Кипучий чайник
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 55
По умолчанию C++ виртуальные функции

Помогите плиз, используя мою прогу, используя мой класс, объявить в нем функции виртуальными и дополнить программу классом, в котором будет использованы эти функции. Написать демонстрационную программу использования данных виртуальных функций. Вот код:
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;

enum month {jan = 1, feb, mar, apr, may, jun, jul, aug, sep, okt, nov, dek};
class DATE
{
public:
	void Print(char smb); //вывести дату по формату ДД*ММ*ГГ, где * - char smb
	unsigned Valid(unsigned dd, month mm, unsigned yy); //проверка значений ДД.ММ.ГГ
	//static void MyMethod(DATE& MyDate);
	DATE(DATE& MyDate);
	DATE(); //инициализация датой 01.01.0001
	~DATE();
	unsigned SetDATE(unsigned dd, month mm, unsigned yy); //изменить дату
private:
   unsigned dd;
   month mm;
   unsigned yy;
   char format;
};

DATE::DATE(DATE& MyDate) //определение конструктора копии
{
	dd = MyDate.dd;
	mm = MyDate.mm;
	yy = MyDate.yy;
	format = MyDate.format;
	cout << "Copy Constructor...\n";
}

DATE::DATE():dd(01) //определение конструктора
{
	//dd = 01;
	mm = jan;
	yy = 0001;
	cout << "Constructor...\n";
}

DATE::~DATE() //определение деструктора
{
	cout << "Destructor...\n";
}

//void DATE::MyMethod(DATE& MyDate)
//{
	//MyDate.Print(MyDate.format);
	//MyDate.Print(MyDate.format);
//}

void DATE::Print(char smb)
{
	cout<<dd<<smb<<mm<<smb<<yy<<"\n";
}

unsigned DATE::SetDATE(unsigned dd, month mm, unsigned yy)
{
	this->dd = dd;
	this->mm = mm;
	this->yy = yy;
	return 0;
}

unsigned DATE::Valid(unsigned dd, month mm, unsigned yy)
{
    if (dd>31){
        return 0;
    }
    if ((mm==feb) && (dd>28) && (!(yy%4))){
        return 0;
    }
    if ((mm==feb) && (dd>29)){
        return 0;
    }
    return 1;
}

int main()
{
	cout << "Input a separator character: ";
	char format = getch();
	cout << format << "\n";
	
	DATE MyDate;
	MyDate.Print(format);
    
    cout << "Example of Date:\n";
	MyDate.SetDATE(18, jan, 1991);
	MyDate.Print(format);

	//DATE::MyMethod(MyDate);

	if (MyDate.Valid(18, jan, 1991) == 1) cout << "It's OK Date\n";
    else cout << "Date is Wrong";

	getch();
	return 0;
}
iKarma вне форума Ответить с цитированием
Старый 27.11.2011, 23:52   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

для демонстрации виртуальных методов нужно минимум два класса - базовый и потомок
p51x вне форума Ответить с цитированием
Старый 28.11.2011, 10:50   #3
iKarma
Кипучий чайник
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 55
По умолчанию

А пример можете привести? Базовый класс у меня есть, а что написать в качестве потомка?

Последний раз редактировалось iKarma; 28.11.2011 в 12:10.
iKarma вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ооп, виртуальные функции c++ Алексей_ЕА Помощь студентам 11 18.11.2011 20:06
виртуальные функции vanek1 Помощь студентам 1 08.06.2011 17:49
ВИРТУАЛЬНЫЕ ФУНКЦИИ в Delphi MaxMad Помощь студентам 0 30.05.2010 20:06
Виртуальные функции bigory Помощь студентам 2 06.06.2009 22:44
НАСЛЕДОВАНИЕ И ВИРТУАЛЬНЫЕ ФУНКЦИИ С++ ermac52 Помощь студентам 1 05.06.2009 11:03