Frans Englich wrote:
> On Monday 10 October 2005 22:29, Mark Mitchell wrote:
> 
>>Frans Englich wrote:
>>
>>>Followup question: what is the increased cost of calling a non-virtual,
>>>inlined function('inline' keyword) on a virtual base?
>>
>>None, if the function is inlined -- and whether it is inlined or not
>>should not be affected by whether or not it is in a virtual base.
> 
> 
> Ok, let me check my understanding of Joe's and your's reply, by an example:
> 
> //----------------------------------------------
>     class Shared {
>     public:
>       // ....
>         inline void ref() { m_ref++; }
>       // ...
>     protected:
>         unsigned int m_ref;
>     };
> 
>     class B : public virtual Shared {};
>     class C : public virtual Shared {};
>     class BC : public B, public C {};
> //----------------------------------------------
> 
> Running the expression "BCinstance->ref()" leads to the penalty that 
> accessing 
> the "m_ref" variable requires an indirection, if I've understood correctly.

Yes.

> What can safely be concluded from that? For example, could register 
> allocation 
> make it uncertain exactly how much the indirection costs?

Yes.  (There are even scenarios where the indirection could actually
help, rather than hurt.)  You'll just have to measure.

-- 
Mark Mitchell
CodeSourcery, LLC
[EMAIL PROTECTED]
(916) 791-8304

Reply via email to