shootingstars

posts(9) comments(4) trackbacks(0)
  • C++博客
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

常用链接

  • 我的随笔
  • 我的评论
  • 我参与的随笔

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • C++(7)
  • IPC
  • PKI(1)
  • 网络(1)

随笔档案

  • 2007年7月 (3)
  • 2007年6月 (5)
  • 2006年2月 (1)

我的收藏

  • Linux,Flex,Yacc....
  • 对很多东东的理解极具深度。文章细致,由浅入深。

搜索

  •  

最新评论

  • 1. re: P2P之UDP穿透NAT的原理与实现(附源代码)
  • 测试了下, 打不通, 求指导。
  • --napt
  • 2. re: P2P之UDP穿透NAT的原理与实现(附源代码)
  • 楼主,工程页面已经没了,给以发我一份吗?谢谢
    549162261@qq.com
  • --SLINGERWANG
  • 3. re: P2P之UDP穿透NAT的原理与实现(附源代码)
  • 楼主 工程下载失败 可否提供一份学习 谢谢
    msopengl@163.com
  • --jemmyLiu
  • 4. re: 如何删除C++容器中的值
  • 评论内容较长,点击标题查看
  • --cchao

阅读排行榜

评论排行榜

View Post

[导入]C++中关于类中常数静态成员初始化的问题

class mytestclass
{
public:
    const static int i = 5;
};
int main()
{
    std::cout<<mytestclass::i<<std::endl;
    return 0;
}
结果没有问题,输出为5(编译器为vc7.1)

但是在下面这个例子中:
int regi()
{
    return 5;
}
class mytestclass
{
public:
    const static int i = regi();
};
int main()
{
    std::cout<<mytestclass::i<<std::endl;
    return 0;
}
输出却不正确,输出为0(编译链接都没有问题)。。。
似乎代码并没有执行regi函数?

在C++标准中将初始化变量分为"动态初始化"和"静态初始化","动态初始化"为利用函数进行初始化,"静态初始化"为常量表达式进行初始化.
C++标准对于类中的常量表达式的"动态初始化"似乎并未做说明,所以是否支持类中常数静态变量的动态初始化也就取决与编译器的设计了.
但是无论如何vc7.1的编译结果都是不对的,它并没有给出错误,但是结果与逻辑不向符合,这应该是vc7.1的一个bug.(在vs2005中的C++编译器已经修正了这个bug,给出了一个编译Error)

详细讨论请见:
http://community.csdn.net/Expert/topic/4432/4432789.xml?temp=.3202783

特别感谢qfeng_zhao 、 lxpws 、 iGray 等几位.



shootingstars 2006-01-23 11:46 发表评论

文章来源:http://www.cnblogs.com/shootingstars/archive/2006/01/23/321956.html

posted on 2007-07-31 13:17 shootingstars 阅读(580) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
  • [导入]C++中关于类中常数静态成员初始化的问题
  • boost::regex学习
  • boost::algorithm学习
  • 是我rp不好,还是Microsoft的rp不好。。。
  • 五种迭代器
  • C++泛型算法笔记(1)
  • 如何删除C++容器中的值
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


 
Powered by:
C++博客
Copyright © shootingstars