C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 课堂成员的范围大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在以下示例中,阵列v的大小是否保证为2或3?
static const int i = 3;

class X {

    char v[i];
    static const int i = 2;
};

从标准来看,

我认为这意味着’我’将是2,重新评估的东西在这里意味着什么?

解决方法

正确的行为是它应该导致错误,因为重新评估会改变含义:

3.3.6节中的示例:

该示例与您的示例类似(使用枚举而不是静态const int)

typedef int  c;
enum { i = 1 };
class X {
    char  v[i];    // error: i refers to ::i
                   // but when reevaluated is X::i
    int  f() { return sizeof(c); } // OK X::c
    char  c;
    enum { i = 2 };
};

在遇到v [i]时,编译器只知道enum {i = 1}; (或静态const int i = 3;,但是当已知完整类声明时,char v [i]会有所不同,因为我将被重新评估为2.

大佬总结

以上是大佬教程为你收集整理的c – 课堂成员的范围全部内容,希望文章能够帮你解决c – 课堂成员的范围所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。