在对象实现之后动态绑定大多数不相关的对象

时间:2015-01-28 06:06:58

标签: c++ polymorphism

我有3个对象,我想动态绑定并使用它们共同共享的一组特定功能。我知道我可以使用虚函数创建一个父类,并将这些对象作为衍生物,但有没有办法在不这样做的情况下获得相同的效果?

编辑: 我正在谈论3个不同的类,它们有一些我想在创建一个函数后使用的函数(取决于用户输入)。但我不想以任何方式编辑这些原始类。

1 个答案:

答案 0 :(得分:0)

我不完全理解“动态绑定”,“无关对象”和“共享功能”的含义(如果你解释这些要点,你会收到更明确的答案)。 但是,如果您正在讨论具有一些通用数据和一组相同功能来管理它们的三个对象(而不是类),请考虑数据的静态字段。

编辑:包含静态数据的示例

#include <iostream>
using namespace std;

class CommonDataForObjects
{
private:
	int id; // personal data of object
	static int maxID; // commom data for all objects
	static int activeID; // also commom data for all objects
public:
	CommonDataForObjects()
	{
		// when object created generate new id
		maxID++;
		id = maxID;
	}
	
	int setAsActive()
	{
		// remember the id of prevoius active
		int prevID = activeID;
		// change active id to id ot object for which this method is called
		activeID = id;
		// return the id of prevoius active object
		return prevID;
	}

};

int CommonDataForObjects::maxID = 0;
int CommonDataForObjects::activeID = 0;

int main()
{
	CommonDataForObjects obj1;
	CommonDataForObjects obj2;
	CommonDataForObjects obj3;
	// testing
	cout << "Making obj2 the active... previus active was " << obj2.setAsActive() << endl;
	cout << "Making obj1 the active... previus active was " << obj1.setAsActive() << endl;
	cout << "Making obj3 the active... previus active was " << obj3.setAsActive() << endl;
}