Why do we not have a virtual constructor in C++?

Hear it from the horse’s mouth. 🙂 From Bjarne Stroustrup’s C++ Style and Technique FAQ Why don’t we have virtual constructors? A virtual call is a mechanism to get work done given partial information. In particular, “virtual” allows us to call a function knowing only any interfaces and not the exact type of the object. … Read more

Inheriting constructors

If your compiler supports C++11 standard, there is a constructor inheritance using using (pun intended). For more see Wikipedia C++11 article. You write: class A { public: explicit A(int x) {} }; class B: public A { using A::A; }; This is all or nothing – you cannot inherit only some constructors, if you write … Read more

Rule-of-Three becomes Rule-of-Five with C++11? [closed]

I’d say the Rule of Three becomes the Rule of Three, Four and Five: Each class should explicitly define exactly one of the following set of special member functions: None Destructor, copy constructor, copy assignment operator In addition, each class that explicitly defines a destructor may explicitly define a move constructor and/or a move assignment … Read more

Using “Object.create” instead of “new”

With only one level of inheritance, your example may not let you see the real benefits of Object.create. This methods allows you to easily implement differential inheritance, where objects can directly inherit from other objects. On your userB example, I don’t think that your init method should be public or even exist, if you call … Read more

Best way to do multiple constructors in PHP

I’d probably do something like this: <?php class Student { public function __construct() { // allocate your stuff } public static function withID( $id ) { $instance = new self(); $instance->loadByID( $id ); return $instance; } public static function withRow( array $row ) { $instance = new self(); $instance->fill( $row ); return $instance; } protected … Read more