您的位置:首页 > 编程语言 > C语言/C++

C++学习之const常量

2013-06-30 15:50 274 查看
#include<iostream>
#include<string>
using namespace std;
//const int * const w()
//{
//	static int i;
//	return &i;
//}
/* ------------------------------------------------------------
5,声明一个“成员函数”为const,则等于告诉编译器该成员函数可以为igconst对象所调用。
一个没有被明确声明为const的成员函数被看成是将要修改对象中的数据成员的函数,
而且编译器不允许它为一个const对象所调用。
把const放在函数参数表的后面,能取得想要的结果。
*/
class Fred
{
const int size;
public:
Fred(int sz) ;
void print();
};
Fred::Fred (int sz) :size(sz){}  // 1,花括号前 专门给const 初始化
void Fred::print () {cout <<size<<endl;}
class Integer
{
int i;
static const int size =100;//2,必须初始化  且是常量成员 在所有对象中  都一样
enum {size2=100}; // 4,使用枚举 也可以同样达到效果~
public:
Integer (int ii=0);
void print();
int f() const ;
};
Integer::Integer (int ii) :i(ii) {}
void Integer::print (){cout<<i<<' ';}
int Integer::f() const {return i;}

class Y
{
int i;
mutable  int j;// 7,指定特定的数据成员,可以在一个const对象里被改变
public:
Y();
void f() const ;
};
Y::Y ():j(0) {i=0;}
void Y::f() const
{
((Y*)this)->i ++;//  6,this是一个const指针,将其强制转换为一个普通指针
j++;
}
int main()
{
Integer i[100];//3,将数组初始化为0的快捷方法   memset()
for (int j=0;j<100;j++)
i[j].print ();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: