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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2011, 03:02   #1
RYaroslav
Новичок
Джуниор
 
Регистрация: 16.05.2011
Сообщений: 6
По умолчанию Создание объекта..

у меня возникает такой вопрос ...:
Есть два класса ..
Код:
class Base
{
}
class Child: public Base
{
}
int main()
{
     Base *pt = new Child;

}
где можно использовать такой тип создания объекта?? Что дает такое создание???

Спасибо..

Последний раз редактировалось Stilet; 16.05.2011 в 18:09.
RYaroslav вне форума Ответить с цитированием
Старый 16.05.2011, 03:09   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

дает работать с объектами одной природы. в любой книге по с++ про это написано
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 16.05.2011, 15:15   #3
RYaroslav
Новичок
Джуниор
 
Регистрация: 16.05.2011
Сообщений: 6
По умолчанию

Я так понимаю, что вопрос которые можно найти в книге задавать нельзя???

Я уже один год работаю на Qt и у меня не возникало никогда такой проблемы, чтобы я не смог обойтись простым динамическим созданием объекта .. Увидев такой код, я удивился ... поэтому и написал на форуме ..

Но и на том спасибо ..))

Последний раз редактировалось Stilet; 16.05.2011 в 18:12.
RYaroslav вне форума Ответить с цитированием
Старый 16.05.2011, 15:32   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Я уже один год работаю на Qt
дааа... очень сложно себе это представить, конечно
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 16.05.2011, 15:47   #5
RYaroslav
Новичок
Джуниор
 
Регистрация: 16.05.2011
Сообщений: 6
По умолчанию

у меня для тебя просьба на будущее ... если не можешь помочь, то пожалуйста - не говори всякую фигню .. Спасибо)
RYaroslav вне форума Ответить с цитированием
Старый 16.05.2011, 15:53   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2RYaroslav
во-первых, я ответил на твой вопрос.
Цитата:
дает работать с объектами одной природы
так что твой камент, что я не могу помочь, не в тему

во-вторых, твоя фраза равносильна следующей
Цитата:
уже год езжу на машине, и у меня не возникало такой проблемы, что надо сдать назад. я просто разворачивался и ехал в обратную сторону. а если развернуться невозможно, я выходил и толкал машину
ну и у меня для тебя небольшая просьба. почитай все же специализированную литературу, изучи основы языка с++, потом пиши на форумах, что ты год работаешь с Qt. спасибо
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 16.05.2011, 16:01   #7
RYaroslav
Новичок
Джуниор
 
Регистрация: 16.05.2011
Сообщений: 6
По умолчанию

"дает работать с объектами одной природы"))

это очень-очень полный ответ ...
он позволяет очень многое понять)))

Спасибо, иду пролистывать Страуструпа ..)
RYaroslav вне форума Ответить с цитированием
Старый 16.05.2011, 16:05   #8
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

RYaroslav лучше ты бы молчал, что год работаешь. Без обид. Код, который ты привел позволяет с помощью указателя на базовый класс работать с методами производных классов. Короче читай тему полиморфизм. Не понимая что это такое, в Qt лучше не лезть.
profi вне форума Ответить с цитированием
Старый 16.05.2011, 17:11   #9
RYaroslav
Новичок
Джуниор
 
Регистрация: 16.05.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от profi Посмотреть сообщение
RYaroslav лучше ты бы молчал, что год работаешь. Без обид. Код, который ты привел позволяет с помощью указателя на базовый класс работать с методами производных классов. Короче читай тему полиморфизм. Не понимая что это такое, в Qt лучше не лезть.
Какие обиды??))
Я же кажется говорил, что никогда не встречал такого ... Если мне нужно вызывать методы дочерних классов, я создаю объект дочернего класса и вызываю метод ...
Я же кажется спросил, какие случаи могут быть, когда нельзя воспользоваться тем вариантом, которым я пользуюсь ...???

и уже может достаточно обсуждать мой опыт и мои знания ... я не для этого сюда зашел ...
Спасибо ..

так вот:
Код:
#include <iostream>

using namespace std;
class Base
{
	static const int x = 1;
public:
	void show() { cout<<x;}
	virtual ~Base()	{cout<<"Base"<<endl;}
};
class Child: public Base
{
private:
	static int i;
	static const int b = 4;
public:
	
	~Child() {cout<<"Child"<<endl;}
};
int Child::i = 4;
int main()
{	
	Base *pt = new Child;
	pt->show();
	delete pt;	
	getchar();
	return 0;
}

в данном случае я могу выполнять метод родительского класса из дочернего .
все правильно? да ... но я могу написать в дочернем классе тоже метод show ... код программы:.
Код:
class Child: public Base
{
private:
	static int i;
	static const int b = 4;
public:
	void show()
	{
		Base::show();
	}
	~Child() {cout<<"Child"<<endl;}
};
int main()
{
    Child *pt1 = new Child;
    pt1->show();
}
что изменилось???

Последний раз редактировалось Stilet; 16.05.2011 в 18:13.
RYaroslav вне форума Ответить с цитированием
Старый 16.05.2011, 18:05   #10
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>

using namespace std;

//----------------------------------------------------------------
class Animal {
public:
	virtual ~Animal() {}

	virtual const char *name() const = 0;
	virtual const char *say() const = 0;

	void foo()
	{ cout << name() << " say: " << say() << endl; }
};

//----------------------------------------------------------------
class Dog : public Animal {
public:
	const char *name() const
	{ return "dog"; }
	
	const char *say() const
	{ return "gav-gav"; }
};

//----------------------------------------------------------------
class Cat : public Animal {
public:
	const char *name() const
	{ return "cat"; }

	const char *say() const
	{ return "mur-mur"; }
};

//----------------------------------------------------------------
class Cow : public Animal {
public:
	const char *name() const
	{ return "cow"; }

	const char *say() const
	{ return "muu-muu"; }
};

//----------------------------------------------------------------
int main()
{
	vector<Animal *> v;

	v.push_back(new Cat);
	v.push_back(new Dog);
	v.push_back(new Cow);

	for_each(v.begin(), v.end(), mem_fun(&Animal::foo));

	return 0;
}
читай код и вкуривай мой ответ до просветления

Цитата:
дает работать с объектами одной природы
опять же, чтоб больше показать гибкость, метод foo можно вынести за пределы класса

Код:
//----------------------------------------------------------------
void foo(const Animal *animal)
{ cout << animal->name() << " say: " << animal->say() << endl; }

//----------------------------------------------------------------
int main()
{
	vector<Animal *> v;

	v.push_back(new Cat);
	v.push_back(new Dog);
	v.push_back(new Cow);

	for_each(v.begin(), v.end(), ptr_fun(&foo));

	return 0;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 16.05.2011 в 18:11.
pproger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Програмное создание объекта pavellyba Общие вопросы Delphi 14 02.04.2011 16:45
ООП. Создание объекта Lisёноk Помощь студентам 2 23.09.2010 00:29
Динамичесое создание объекта Черничный Общие вопросы Delphi 8 29.06.2008 23:01
Динамическое создание объекта Fruit Общие вопросы Delphi 5 24.01.2008 11:00
Динамическое создание объекта Fruit Общие вопросы Delphi 2 16.01.2008 21:18