Const all the things?
&gt; Pass out-parameters by pointer: Widget*.<p>OP says this like this is an industry rule of sorts but I&#x27;ve pretty much always seen non-const references for this. Using pointers is terrible because now you have to add a check for null inside your function, as its API contract says &quot;I can accept null values&quot;, while references make it clear that it does not make sense to call if you don&#x27;t have a correct object to pass it.<p>&gt; That’s right: the point of making a class with private members is to preserve invariants among those members.<p>How would OP make a class, which loads content on construction which must absolutely not being changed after construction then, even within its implementation ? &quot;Being careful&quot; is really not sufficient in my experience, and introducing child classes just to enforce the invariant that &quot;const&quot; provides is actively harmful to readability.