| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2121 人关注过本帖
标题:关于静态变量和常量的运用
只看楼主 加入收藏
lindayanglong
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-3-9
收藏
 问题点数:0 回复次数:13 
关于静态变量和常量的运用
关于静态变量和常量的运用,帮忙看看下面这个程序有什么问题?我只知道 如果设置了静态成员变量,则一定要给静态成员变量赋初值,而且在类外设置。那么静态常量 和常量又该怎么用呢?下面的程序又该怎么改?错误主要就在static const int inity=1970;上   请指教
#include<iostream>
using namespace std;
class year
{
public:
    year(){y=inity;}
    int year2()const  //常成员函数只能返回值,不能修改数据成员的值
    { return y;}
    void addyear(int i){y=year()+i;}


private:
    int y;
    static const int inity=1970;
};

void main()
{
    year y1;
    year *const py1=new year();
    y1.addyear(1);
    py1->addyear(2);
    cout<<y1.year2()<<" "<<py1->year2()<<endl;
}
搜索更多相关主题的帖子: 常量 变量 静态 
2008-09-10 17:19
清枫流影
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-9-10
收藏
得分:0 
VC6不支持static const。
2008-09-10 18:30
守鹤
Rank: 4
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
收藏
得分:0 
这个问题。首先,在类中定义好这个静态变量,然后在类外在对静态变量赋值。
例:
class  A
{
     static  float e;
 };

float  A::e=23;
2008-09-10 18:43
守鹤
Rank: 4
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
收藏
得分:0 
再说明一下,static与const不能同时使用
它们都是内部变量,但const不能改变变量的值
static可以
2008-09-10 18:45
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
static 和const可以在类中同时用,被作为编译期常量...

樱花大战,  有爱.
2008-09-10 18:48
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
问题在于static const int inity=1970;
static 和 const 真不能同时使用?? 我很迷惑...

2008-09-10 18:50
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
顶6楼啊,我说呢...我也学过这种用法啊...
我想LZ 的问题是:没有在类外再次定义const static数据成员吧,尽管它已经初始化了,但语法上还要求在类外再次定义它!

2008-09-10 18:53
lindayanglong
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-3-9
收藏
得分:0 
谢谢各位, 我还是改不对,请高手帮个忙,看看具体怎么改?
2008-09-11 11:29
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
那这样写你觉得怎么样??
至于功能上的问题,你再自己解决...

#include<iostream>
using namespace std;
class year
{
public:
    year(){}
    int year2()const  //常成员函数只能返回值,不能修改数据成员的值
    { return y;}
    void addyear(int i){/*y=year()+i;*/} //这里你写得有问题吧...
private:
    int y;
    static const int inity;
};
const int year::inity=1970;
void main()
{
    year y1;
    year *const py1=new year();
    y1.addyear(1);
    py1->addyear(2);
    cout<<y1.year2()<<" "<<py1->year2()<<endl;
}

2008-09-11 12:32
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
什么是编译期常量 呢?
2008-09-11 20:18
快速回复:关于静态变量和常量的运用
数据加载中...
 
   



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

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