Related articles |
---|
virtual functions and optimization at compile time pdn@sasken.com (preetham) (2003-11-21) |
Re: virtual functions and optimization at compile time sasulzer@seanet.com (Stephen Sulzer) (2003-12-03) |
Re: virtual functions and optimization at compile time joachim.durchholz@web.de (Joachim Durchholz) (2003-12-03) |
Re: virtual functions and optimization at compile time hannah@schlund.de (2003-12-03) |
Re: virtual functions and optimization at compile time tmk@netvision.net.il (2003-12-03) |
Re: virtual functions and optimization at compile time alexc@std.com (Alex Colvin) (2003-12-03) |
From: | tmk@netvision.net.il (Michael Tiomkin) |
Newsgroups: | comp.compilers |
Date: | 3 Dec 2003 20:21:35 -0500 |
Organization: | http://groups.google.com |
References: | 03-11-076 |
Keywords: | OOP, optimize |
Posted-Date: | 03 Dec 2003 20:21:35 EST |
"preetham" <pdn@sasken.com> wrote in message news:03-11-076...
> Virtual Functions Are Supposed To Be Optimized Bcoz They R > Supposedly
> Resolved At Run-Time. How Can Virtual Functions Be Resolved At
> Compile-Time???
When an object is created in the program, the compiler knows the
type of this object, and then the compiler can find any virtual method
of its class. When an object is a reference/ptr obtained from the
outside, the exact type of the object cannot be determined, and the
virtual methods are found at runtime. For example:
class A
{
...
virtual int a();
...
};
void func(A x, A& y, A* z)
{
A u;
A* t = new A;
A& v = u;
A& s = *z;
A* w = ff(u);
x.a(), y.a(), z->a(), u.a(), v.a(), t->a(), s.a(), w->a();
// the type of x, u, t, and v is 'A', and the address of 'a'
// is known at compile time;
// the types of y, z, s, and w can be A or any descendant of A,
// and the address of 'a' can be determined only at runtime
> Rgrds,
> Preetham
> [By flow analysis that determines that it'll always call the same
> function, I suppose. -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.