A *a; 这句代码创建一个类A的对象了么?
另外
A *a = new A();
A *a = new A;
两句有区别吗?
谢谢
[解决办法]
A *a;
没有创建对象.
A *a = new A();
A *a = new A;
是相同的.
[解决办法]
A *a = new A(); 可以通过编译
和A *a = new A;
是一样的。
[解决办法]
A *a = new A(); 是显示调用A的构造函数A();
A *a = new A; 是隐式调用A的构造函数();
应该是在相同的。
[解决办法]
那么 A *a= new A(); 当然创建对象了。而且还分配内存了。
[解决办法]
A *a= new A(); 在堆上创建了一个A的对象,然后a指向这个对象的内存地址。
a->MemberFoo(); 就是调用a对象的MemberFoo方法嘛。
这还有什么疑问?
[解决办法]
1楼已经答了啊
A *a;
没有创建对象.
A *a = new A();
A *a = new A;
是相同的.都创建了对象
[解决办法]
A *a; 没有创建对象,只是申明了一个指向A类的指针。
A *a = new A();和A *a = new A;都创建了对象,而且用a指针指向了所创建对象的内存地址(分别显式和隐式调用了构造函数)。
楼主还是找本C++的基础书记看看吧,内存分配是非常重要的问题,一定要搞懂。
不要操之过急,慢慢来,加油,你定会成功!
[解决办法]
A *a声明了一个指针该指针可以用来指向A.占用sizeof(A*)内存.如果没有用到a,那么优化后不存在a的内存再用.
二者一样.前提是A有无参构造.
[解决办法]
A *a申请一段内存,一般是四个字节
当使用A *a=new A时
*a所申请的内存里存放了A对象的地址
a->fun()
这样的调用只能在new A之后调用