構文

/// abstract code

abstract class IFoo
{
private:
	uint value;

public:
	void set(uint value);
	uint get();
}

class IHoge : IFoo
{
public:
	this(uint value)
	{
		this.set(value);
	}

	void set(uint value)
	{
		super.value = value;
	}

	uint get()
	{
		return super.value;
	}
}

uint func(IHoge hoge)
{
	return hoge.get();
}

int main(char[][] args)
{
//	auto hoge = new IHoge(10);
	printf("%d\n", func(new IHoge(10)));
	return 0;
}

そうか、こういう構文でも書けるんだね。
funcがIHogeのインスタンスを受け取るんだから、そりゃそうだよな。

printf("%d\n", new IHoge(10).get());

とは書けないか・・・

追記:うっはwwwwww

printf("%d\n", (new IHoge(10)).get());

とは書けるぞwwwwwww
そうか、インスタンスのアドレスに対して、get()メソッドを使ってるようなもんだよな。
というか、内部ではこうなってるんじゃん。