你好,
考虑以下代码,可以将原型(prototype) OOP 分类为
C++?
#include <iostream>
template< class... Bases >
struct TestClass : public Bases...
{
int a;
template< class... Parents >
TestClass< Parents... >* Create() {
return new TestClass< Parents... >();
}
TestClass< Bases... >* Create() {
return new TestClass< Bases... >();
}
};
struct Foo {
int fizz;
};
struct Bar {
int buzz;
};
int main()
{
TestClass< Foo > a;
a.a = 10;
a.fizz = 20;
std::cerr << a.fizz << "\n";
std::cerr << a.a << "\n";
auto b = a.Create();
b->fizz = 30;
std::cerr << b->fizz << "\n";
auto c = b->Create< Bar >();
c->buzz = 357;
std::cerr << c->buzz << "\n";
auto d = b->Create< Foo, Bar >();
d->fizz = 0;
d->buzz = 1;
std::cerr << d->fizz << "\n";
std::cerr << d->buzz << "\n";
return 0;
}
仅供引用,我忘了管理我的内存,抱歉!
最佳答案
不,我不这么认为。 “原型(prototype)”和“经典”OO 之间的主要区别在于原型(prototype) OO 没有类:原型(prototype)本身就是一个对象。如果原型(prototype)被修改,所有从它“继承”的对象也会随之修改。在本示例中,情况并非如此。
关于c++ - 可以将原型(prototype) OOP 视为 C++ 中的范例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15168347/