M classes define abstract protocols, or interfaces. Concrete implementations of an interface defined by an M class are provided by derived protocol provider classes.
M classes have the following restrictions:
- They should contain no member data
- They should not contain constructors or destructors, or overloaded operators such as =.
M classes often contain pure virtual functions that define a fully abstract interface. Some M classes implement some or all member functions, though within the restrictions given above.
M classes are the only use of multiple inheritance in Symbian OS.