| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 428 人关注过本帖
标题:简单的内存问题
只看楼主 加入收藏
lc1234
Rank: 2
等 级:论坛游民
帖 子:23
专家分:27
注 册:2009-7-5
结帖率:50%
收藏
 问题点数:0 回复次数:4 
简单的内存问题
#include <iostream>
using namespace std;

class Father{
    int i;
public:
    int j;
    Father(){}
    Father(int m,int n){
        i = m;
        j = n;
    }
     void fun(){
        cout<<"Father::fun()"<<endl;
    }

};
class Son : public Father{
public:
    Son(){}
    void fun(){
        cout<<"Son::fun()"<<endl;
    }
};
void main(){
    Father* f = new Son;  //这样写肯定没错
    f->fun(); //调的是Father的
   
    Son s = new Son;//为什么是错的,它返回的是Son*,但我不明白为什么返回的是Son*,难道分配内存的时候是以    指针的形式分配的?请高手指教指教!

   
}
搜索更多相关主题的帖子: 内存 
2009-10-13 21:31
shl305
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:36
专家分:121
注 册:2009-3-13
收藏
得分:0 
new Son 是在内存中分配一块空间用来存储一个Son对象,同时返回一个指针,这个指针就指向那块内存
2009-10-13 21:42
最左边那个
Rank: 4
等 级:业余侠客
威 望:3
帖 子:97
专家分:201
注 册:2009-4-24
收藏
得分:0 

new操作符是用来动态分配存储空间的!说到存储空间,必然会联想到空间的地址。那么这个空间的地址是什么呢?这时候就应该像下面:
Son *s = new Son
注意,这里一定是指针类型,表示放地址的。
所以,在你的代码中Son s = new Son这样写是不正确的,编译器会给你报错!
2009-10-14 12:19
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
在一个函数中,Son S代表在‘栈’中分配一个对象。

Son* S代表要只在‘栈’中分配一个对象指针。而这个指针指向的对象是用new操作在一个‘堆’上分配的。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-10-14 14:55
newCpp
Rank: 5Rank: 5
来 自:火星
等 级:职业侠客
威 望:3
帖 子:256
专家分:375
注 册:2009-8-17
收藏
得分:0 
楼上面说的都够全面的了!!

#include <iostream>
using namespace std;
 
class Father{
    int i;
public:
    int j;
    Father(){}
    Father(int m,int n){
        i = m;
        j = n;
    }
     void fun(){
        cout<<"Father::fun()"<<endl;
    }
 
};
class Son : public Father{
public:
    Son(){}
    void fun(){
        cout<<"Son::fun()"<<endl;
    }
};
void main(){
    Son f;  //这样写肯定没错
    f.fun(); //调的是Father的
     
    Son s;//为什么是错的,它返回的是Son*,但我不明白为什么返回的是Son*,难道分配内存的时候是以    指针的形式分配的?请高手指教指教!
 
}

编程语言视频教程在线播放学习
2009-10-14 18:07
快速回复:简单的内存问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022229 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved