The * in C++ Initialisations

Possible Duplicate:
The Definitive C++ Book Guide and List

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!


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 .


It's called a pointer. If you're using a C++11 compatible compiler, you can do the following:

auto myClass = std::make_shared<MyClass>();

If you were using a "raw" pointer, you would need to manually delete it when you are finished with the memory, with the shared_ptr , this isn't necessary.


An asterisk stand for a pointer . A pointer is a memory adress. When you write MyClass *myClass , you create a pointer to the beginning of the bits range where your new MyClass is created.

Creating an object with new , you become responsible of it life cycle. YOU will need to delete it when you dont need them anymore, whereas creating MyClass myClass; will be destroy when exiting the scope where you create it. You still can access myClass memory adress even when written this way, using & operator.

If you need more explaination, try to get one of those books.

链接地址: http://www.djcxy.com/p/6858.html

上一篇: 整数到布尔奇怪的语法

下一篇: *在C ++初始化中