问个问题?
class xx
{
public:
xx(){
cout <<" xx " << endl;
}
};
void main()
{
int a;//只是个声明,没有分配内存地址。
xx x;//为啥直接调用了构造函数?不是也是声明,还没有实例化吗?
xx *y = new xx;//这个才是实例化啊
问题点数:50、回复次数:4Top
1 楼CMyMfc(星际人生:=E.F=FlyForEver)回复于 2005-06-02 20:12:41 得分 30
int a; 生成了实例,分配了地址
xx x; 生成了实例, 当然会调用构造函数
xx *y = new xx; 生成了实例
区别就是xx x; 在栈中分配内存, xx *y = new xx; 在堆中分配内存Top
2 楼sunman1982(冥王星)回复于 2005-06-02 20:14:35 得分 5
汗,这个问题……调用了默认构造函数的……Top
3 楼cjxunoo(jason)回复于 2005-06-02 20:22:49 得分 15
我觉得:
int a; // 已经分配内存地址
xx x; // 调用了默认构造函数,生成了实例x,分配了内存
xx *p; // 只是声明了指向xx类型的指针,分配了指针变量占的内存
xx *y = new xx; // 创建了动态实例
Top
4 楼tian_su(问天(渺小得惶恐))回复于 2005-06-02 20:47:28 得分 0
int a ;//a已经是整型int的实例
xx x;//相对的,x也是类xx的实例Top




