标题:C++在类中对变量声明的时候就已经创建了该变量了么?
只看楼主
dltanglin
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-7-6
结帖率:0
已结贴  问题点数:10 回复次数:3 
C++在类中对变量声明的时候就已经创建了该变量了么?
C++在类中对变量声明的时候就已经创建了该变量了么?或者说已经为该变量分配内存了,只是内存中的数是未知的。
代码如下:
//student.h
 class student
{public:
     int score;
     int   num;
 public:
     student();
     student(int s,int n);
     void f1();
     void f2();
};

//student.cpp  
student::student(){}
student::student(int s,int m)
{   
    score=s;
    num=m;
}

void student::f1()
{   
    score=score+1;
    num=num+1;
    cout<<"score="<<score<<",  "<<"num="<<num<<endl;
}

void student::f2()
{
    score=score+2;
    num=num+2;
    cout<<"score="<<score<<",  "<<"num="<<num<<endl;
}

//main
#include "student.h"
void main()
{
    student op;
    op.f1();
    op.f2();
}

输出为:-58993459,-58993459
        -58993457,-58993457
搜索更多相关主题的帖子: 声明 内存 public class 
2011-04-19 14:54
Noll_Nie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:71
专家分:139
注 册:2011-4-19
得分:5 
声明变量时并没有分配内存,只有在定义变量的时候才分配
这个类的构造函数这儿并没有发挥作用啊
2011-04-19 16:22
Noll_Nie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:71
专家分:139
注 册:2011-4-19
得分:0 
student::student()
{
     score=0;
     num=0;
}

int main()
{
    student op,op1(2,3);
    op.f1();
    op.f2();
op1.f1();
op1.f2();
    return 0;
}
这样试一下,我也是新手,呵呵

2011-04-19 16:27
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
得分:5 
C++中的存储空间分为5类:
代码区、全局和静态存储区、堆、栈、常量存储区
全局和静态存储区的对象是会被自动初始化的,堆和栈上的数据是未初始化的
C++类中成员的空间是在对象实例化的时候分配的,根据类的生命域(全局?局部?静态?)、存对象的存取区域决定采用哪种初始化方式
2011-04-19 17:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-337225-1-1.html




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

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