cas and interfaces
    Rene Zwanenburg 
    renezwanenburg at gmail.com
       
    Thu Dec 27 12:07:48 UTC 2018
    
    
  
On Tuesday, 25 December 2018 at 22:07:07 UTC, Johannes Loher 
wrote:
> Thanks a lot for the info, that clarifies things a bit. But it 
> still leaves the question, why it works correctly when 
> inheriting from an abstract class instead of implementing an 
> interface... Any idea about why that?
Unlike interfaces, base class references don't need adjustment. 
You can see this in action by printing addresses:
https://run.dlang.io/is/m6icVr
import std.stdio;
interface I {}
class Base : I {}
class Derived : Base { }
void main()
{
     auto derived = new Derived;
     Base base = derived;
     I i = derived;
     writeln(cast(void*)derived);
     writeln(cast(void*)base);
     writeln(cast(void*)i);
}
> 7FC1F96EE000
> 7FC1F96EE000
> 7FC1F96EE010
    
    
More information about the Digitalmars-d-learn
mailing list