1、在栈中实例化对象
A a;//实例化对象,会调用class A中的构造函数
A b();//声明一个函数,没有传入的参数,返回值为A
假如A类有x成员,那么a.x正确,因为a为对象,但b.x错误,因为b为函数
2、在堆中实例化对象
a、没有定义构造函数(编译器自动生成构造函数)
int *a = new int;//不会将申请到的int空间初始化
int *a = new int();//则会将申请到的int空间初始化为0。
例子
#include<iostream>
using namespace std;
class A
{
public:
int x;
public:
void prin()
{
cout << x << endl;
}
};
int main()
{
A* a = new A;
cout<<a->x<<endl; //-842150451
A* b = new A();
cout<<b->x << endl; //0
system("pause");
return 0;
}
b、自己定义了构造函数
//自己实现了构造函数,下面两种方式完全一样,都会调用构造函数
A* p_a=new A;
A* p_a=new A();