Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当我创建一个类的对象时,比如说,
class A { public: A() {} }; A a;
只有构造函数被调用吗?还是new隐式使用了运算符?
new
就像我们必须做的A* b = new A();
A* b = new A();
此外,将a和b存储在内存中的什么位置?堆栈还是堆?
a
b
在第一种情况下,如果a不是全局变量,则将其放入堆栈,而b将其放入堆中。
在第一种情况下,只调用构造函数。new除非你像第二种情况那样明确地调用它,否则永远不会调用它。
Nonew不会被隐式调用。new返回指向创建的对象类型的指针,而构造函数调用没有返回类型。使用创建的对象new将存在于堆上。New 将分配内存,然后调用构造函数。在表单中创建的对象A a将存在于堆栈中(除非它们是全局变量)。
A a