如果我有一个名为Object的类,那么创建一个实例之间的区别是什么:
Object var;
Run Code Online (Sandbox Code Playgroud)
和:
Object* var = new Object();
Run Code Online (Sandbox Code Playgroud)
?
Bri*_*ndy 17
在这里,您将在堆栈上创建var:
Object var;
Run Code Online (Sandbox Code Playgroud)
所以在上面,var是实际的对象.
在这里,您将在堆上创建var(也称为动态分配):
Object* var = new Object()
Run Code Online (Sandbox Code Playgroud)
在堆上创建对象时,必须delete在使用它时调用它.也var实际上是保持类型的对象的存储器地址的指针Object.在内存地址存在实际对象.
有关更多信息:请参阅我的答案,了解堆栈和堆的内容和位置.
Jam*_*lis 11
这个:
Object var();
Run Code Online (Sandbox Code Playgroud)
是函数声明.它声明了一个不带参数的函数并返回一个Object.你的意思是:
Object var;
Run Code Online (Sandbox Code Playgroud)
正如其他人所指出的那样,它创建了一个具有自动存储持续时间的变量(也就是在堆栈上).
Object var();
Run Code Online (Sandbox Code Playgroud)
声明返回的函数Object.要创建自动对象(即在堆栈上):
Object var; // You shouldn't write the parenthesis.
Run Code Online (Sandbox Code Playgroud)
而:
Object* var = new Object();
Run Code Online (Sandbox Code Playgroud)
是动态分配的Object.
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |