Why Implementing Singleton like This?

In proj.android/jni/hellocpp/main.cpp I see this:
AppDelegate *pAppDelegate = new AppDelegate();
CCApplication::sharedApplication().run();

Though it works (sharedApplication was initialized in the constructor of AppDelegate), it looks confusing. Why implementing the singleton like this? Why not implementing a sharedAppDelegate() method in AppDelegate instead?

Thanks.

AppDelegate inherits CCApplication to override just few methods where your application specific work is done. The engine does not need sharedAppDelegate() (but you can implement it if you need it), but it does need sharedApplication to call CCApplication’s (and overriden in AppDelegate) methods.

Anyway as far as I know this is the way AppDelegate is originally implemented in Cocoa. Authors of Cocos2d-x just ported it to C++.