C++ Object Instantiation

On the contrary, you should always prefer stack allocations, to the extent that as a rule of thumb, you should never have new/delete in your user code. As you say, when the variable is declared on the stack, its destructor is automatically called when it goes out of scope, which is your main tool for … Read more

Is there a way to instantiate a class by name in Java?

Two ways: Method 1 – only for classes having a no-arg constructor If your class has a no-arg constructor, you can get a Class object using Class.forName() and use the newInstance() method to create an instance (though beware that this method is often considered evil because it can defeat Java’s checked exceptions). For example: Class<?> … Read more

Creating an instance using the class name and calling constructor

Yes, something like: Class<?> clazz = Class.forName(className); Constructor<?> ctor = clazz.getConstructor(String.class); Object object = ctor.newInstance(new Object[] { ctorArgument }); That will only work for a single string parameter of course, but you can modify it pretty easily. Note that the class name has to be a fully-qualified one, i.e. including the namespace. For nested classes, … Read more

Why is __init__() always called after __new__() in Python?

Use __new__ when you need to control the creation of a new instance. Use __init__ when you need to control initialization of a new instance. __new__ is the first step of instance creation. It’s called first, and is responsible for returning a new instance of your class. In contrast, __init__ doesn’t return anything; it’s only … Read more

How do I write a custom init for a UIView subclass in Swift?

The init(frame:) version is the default initializer. You must call it only after initializing your instance variables. If this view is being reconstituted from a Nib then your custom initializer will not be called, and instead the init?(coder:) version will be called. Since Swift now requires an implementation of the required init?(coder:), I have updated … Read more

Is there a way to instantiate objects from a string holding their class name?

Nope, there is none, unless you do the mapping yourself. C++ has no mechanism to create objects whose types are determined at runtime. You can use a map to do that mapping yourself, though: template<typename T> Base * createInstance() { return new T; } typedef std::map<std::string, Base*(*)()> map_type; map_type map; map[“DerivedA”] = &createInstance<DerivedA>; map[“DerivedB”] = … Read more

What is the difference between “Class.forName()” and “Class.forName().newInstance()”?

Maybe an example demonstrating how both methods are used will help you to understand things better. So, consider the following class: package test; public class Demo { public Demo() { System.out.println(“Hi!”); } public static void main(String[] args) throws Exception { Class clazz = Class.forName(“test.Demo”); Demo demo = (Demo) clazz.newInstance(); } } As explained in its … Read more