Someone told me that declaring the destructor for A protected prevents inheritance at compile time... but wouldn't that disallow the object to be created altogether?
It does not prevent inheritance but it does prevent the creation of objects of type A.