为对象创建方法 [英] creating methods for objects

查看:57
本文介绍了为对象创建方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




是否有可能覆盖一个特定对象的方法,比如你可以在Ruby中用
做什么?类似的东西:


- 8< -


A级{

公开:

无效方法();

}


void A :: method(){

//做点什么...

}


A x = new A();


void x :: method( ){

//做别的事......

}


- 8< -


或者接近它的任何东西?


谢谢,


Andre''

Hi,

is it possible to override methods for one specific object, like you can
do in Ruby? Something like:

--8<--

class A {
public:
void method();
}

void A::method() {
// do something...
}

A x = new A();

void x::method() {
// do something else...
}

--8<--

Or anything close to that?

Thanks,

Andre''

推荐答案

2004年6月18日星期五16:31:01 -0300 in comp.lang.c ++,André

< an ***** *****@syspoint.com.br>写道,
On Fri, 18 Jun 2004 16:31:01 -0300 in comp.lang.c++, André
<an**********@syspoint.com.br> wrote,
是否可以覆盖一个特定对象的方法,就像你在Ruby中做的那样?
is it possible to override methods for one specific object, like you can
do in Ruby?




No.你可以为这个对象声明一个派生类。

你可能会使用一个指向函数的指针,或者一些类似的低级别的指示。

hackery。



No. You might declare a derived class just for that one object.
You might use a pointer to a function, or some similar low-level
hackery.


André写道:
André wrote:
是否有可能覆盖一个特定对象的方法,就像你可以在Ruby中做的那样?类似于:

- 8< -

A类{
公开:
无效方法();
}

void A :: method(){
//做点什么...

A x = new A();

void x :: method(){
//做其他事......

- 8< -
或者接近那个?
is it possible to override methods for one specific object, like you can
do in Ruby? Something like:

--8<--

class A {
public:
void method();
}

void A::method() {
// do something...
}

A x = new A();

void x::method() {
// do something else...
}

--8<--

Or anything close to that?




No.


C ++是为了适应C编译器和链接器模型而发明的,最小的

更改旧版编译器。每个翻译单元必须包含每个方法相同的

定义,只是为了简化链接器的要求。


调查函数指针和方法指针,让''x''指向一个与其类的方法不同的

方法。


为什么你不能只使用Ruby如果你需要它? C ++适用于大型,低级别的b $ b系统;不是今天写的平均代码。


-

Phlip
http://industrialxp.org/community/bi...UserInterfaces




未经测试的代码,但你会得到一个jist。

class BarnyardAnimal

{

私人:


int something;


static int EatDefault(BarnyardAnimal& me,int food)

{

me.something = 7 +食物; //访问成员变量

}


public:


int(* pEat)(BarnyardAnimal&,int );


int吃(int食物)

{

pEat(* this,food);

}


BarnyardAnimal(无效):吃(EatDefault)

{


}

};

int main(无效)

{

BarnyardAnimal cow;


cow.Eat(5); //默认功能


cow.Eat = ReturnFunctionPointer();


cow.Eat(7); //调用其他功能

}

-JKop

Untested code, but you''ll get the jist.
class BarnyardAnimal
{
private:

int something;

static int EatDefault(BarnyardAnimal& me, int food)
{
me.something = 7 + food; //Accessing member variable
}

public:

int (*pEat)(BarnyardAnimal&,int);

int Eat(int food)
{
pEat(*this,food);
}

BarnyardAnimal(void) : Eat(EatDefault)
{

}

};
int main(void)
{
BarnyardAnimal cow;

cow.Eat(5); //Default function

cow.Eat = ReturnFunctionPointer();

cow.Eat(7); //Calls other function
}
-JKop


这篇关于为对象创建方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆