staticconst:类的static const static const const static成员的初始化



学习过C已经好长时间了但是直都没机会去写C代码所以很多东西都已经给遗忘了趁着假期我重新找到了C学习资料来复习并且写下些学习笔记供自己以后复习的用下面是我有关类,const, const , const 成员化问题学习笔记
1.类里const成员化:
个类里建立个const时不能给它初值
foo
{
private:
const i = 100;
public:
foo{}
......
};
这样化方式是不能通过编译在类对象里进行了存储空间分配编译器不能知道const内容是什么所以不能把它用作编译期间常量这意味着对于类里常数表达式来说const就像它在C中样没有作用因此这个化工作必须发生在构造并且要在构造某个特别地方const必须在建立它地方被所以在构造主体里const必须已化了否则就只有等待直到在构造主体以后某个地方给它这意味着过会儿才给const当然无法防止在在构造主体区别地方改变const
构造化表达式
foo
{
private:
const i = 100;
public:
foo{......}
......
};
如果构造是在类外定义则可以这样写:
foo
{
private:
const i;
public:
foo
......
};
foo::foo: i(100){......}

2.类里成员化:
类中变量是属于类而不是属于某个对象它在整个运行过程中只有个副本因此不

能在定义对象时对变量就是不能用构造其正确化方式是:
<数据类型><类名>::<静态数据成员名>=<值> 例如
foo
{
private:
const i;
public:
foo
......
};
foo::i=100;
这表明:
(1)化在类体外进行而前面不加以免和般静态变量或对象相混淆
(2)化时不加该成员访问权限控制符privatepublic等
(3)化时使用作用域运算符来标明它所属类因此静态数据成员是类成员而不是对象成员

3.类里 const 和const 成员化:
在找成员化学习资料时笔者发现了网上有很多有关 const 成员也就是全局静态常量资料const成员要在构造成员在需要在在类体外那么 const 和 const 成员应该在哪里进行化呢?这两个写法又会有什么不样吗?这引起了笔者兴趣在网上查阅了相关资料和做了相关实验后笔者确认了只要用关键字修饰成员化方式和只有关键字修饰成员都必须在类体外而无论在const前面还是后面比如:
Test{
public:
const MASK1;
const MASK2;
};
const Test::MASK1 = 0xFFFF;
const Test::MASK2 = 0xFFFF;
至于两种方式区别我还不知道下面是在网上找到个有关它们区别说法仅供大家参考:
没有区别
个是静态常量
个是常量静态
静态都将存储在全局变量区域其实最后结果都是
可能在区别编译器内区别处理但是最后结果是
Tags:  类的初始化 const成员函数 类的static成员 staticconst

延伸阅读

最新评论

发表评论