I run into MISRA C++ 2008 Guidelines, and a rule 12-8-2 in this guideline says:

> 
> The copy assignment operator shall be declared protected or private in an abstract class.
> 
> 
> 

and then I thought, when I make an abstract class's assignment operator public,  

Is it possible to call it from another class except its subclass?  

I think it's impossible.  

If this is true, why they define this rule? 

Basically, from the point of view of class design, I don't use abstract class which has private member, and I don't define assignment operator in a base class. So, usually, there is no need to apply this rule. However, If there is an abstract base class's public assignment operator, I would make it protected (or private if possible), because it makes no sense to be public. Do you know any other good reasons to apply this rule?

Did I overlook anything?