我有两个问题.
1)构造函数真正做了什么?如果我们在声明实例时不使用构造函数会发生什么?
你能告诉我这两者之间的区别吗?
A a(1,2)
A *a = new A(1,2)
Run Code Online (Sandbox Code Playgroud)
最好的祝福.
构造函数初始化类的成员变量,以便可以使用它.声明实例时不使用构造函数的结果因上下文而异.
如果要在堆上分配变量,如下所示:
A *a;
Run Code Online (Sandbox Code Playgroud)
a 将指向内存中的随机地址,直到将其分配给NULL或0,或者类的现有或新实例,例如:
A *a = new A(1, 2);
Run Code Online (Sandbox Code Playgroud)
如果要在堆栈上分配变量,则使用以下语法:
A a(1, 2); // if parameters are used
A a; // if no parameters are used
Run Code Online (Sandbox Code Playgroud)
以上两者都调用类的构造函数,A在堆栈上分配它的实例.因此,这回答了你的两个问题 - 你的第一个例子A在堆栈上分配一个实例,第二个例子A在堆上分配一个实例.