Thursday 18 April 2019

The * in C++ Initialisations











I'm new to C++ and have been playing around witha few examples, I was just wondering what the * meant when initialising a class.



Normally in AS3 I would do this:



MyClass myClass = new MyClass


But I have seen this in c++




 MyClass *myClass = new MyClass


What is the star for, I;ve seen it used sometimes and not others.



Thanks!


Answer



The asterisk in C++ means many things depending on its place in the program. In this specific instance, it modifies the meaning of myClass to be a pointer to an instance of MyClass, rather than an instance of MyClass.




The difference between the two is that the lifetime of an instance ends when it goes out of scope, while an instance that you allocate and reference through a pointer remains valid even after a pointer goes out of scope.



It is valid to have a declaration like this:



MyClass myClass; // no "new"


In this case, it is not necessary to use new, but the instance's life time is tied to the scope of the variable myClass.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...