常类型是指用类型修饰符const声明的类型,常类型的变量或者类型是不能被更新的,所以,定义或声明常类型的时候一定要进行初始化。
一:常类型。
说明:有两种定义的格式,其效果是一样的,对象初始化后是不能再被更新的(常对象)。
定义格式:
1.<类名>const<对象名> 2: const <类名> <对象名>
例子:
class Cone{
public:
Cone(int a,int b){sum=a+b}
private:
int sum;
};
const Cone one(3,4);
Cone const two(3,4);
二:常指针和常引用
说明:有三种定义的方式,不同的方式意义不同,请注意
定义格式:
1.const <指针类型> *<指针> 声明一个指向常量的指针,常量本身不能改变,但是指针指向的地址可以改变。
2.<指针类型> const *<指针> 声明一个指针常量或者常指针,指针本身指向地址是不能改变的,但是指向地址的值可以改变。
3.const <指针类型> const *<指针> 这种方式大家应该很清楚了,就是上面两个的集合体,指针指向的地址不能改变,同时指向的值也不能改变。
三:常参数
说明:不累述了,例子奉上
例子:
class Cone{
public:
Cone(const int *p,int n){
sum=0;
for(int i=0;i<n;i++){
sum+=*(p+i);
}
cout<<sum<<endl;
}
private:
int sum;
};
void main()
{
int array[6]={1,2,3,4,5,6};
Cone one(array,6);
}
四:常成员函数
说明:顾名思义,用const声明的成员函数称为“常成员函数”,注意,只有常成员函数才有资格操作常量和常对象。
格式:<类型说明符> <函数名>(<参数表>) const; const是在函数后声明的类型修饰符,是函数的一个组成部分,所以,函数实现部分也要注意带上const关键字
例子:
class Cone{
public:
Cone(int a,int b){x=a;y=b;}
void print(){
cout<<"没有使用常量成员函数"<<endl;
cout<<x+y<<endl;
}
void print() const{
cout<<"使用了常量成员函数"<<endl;
cout<<x+y<<endl;
}
private:
int x, y;
};
void main(){
Cone one(3,4);
one.print();
const Cone two(3,4);
two.print();
}
五:常数据成员
说明:有常成员函数自然就有常数据成员啦。由于必须初始化而且又不能更新,所以声明const数据成员时只能通过成员初始化列表来实现构造函数对数据成员的初始化。不明白?看例子。
例子:
class COne
{
public:
COne(int a):x(a),r(x){ } // 常数据成员的初始化
void print();,必须
const int &r; // 引用类型的常数据成员
private:
const int x; // 常数据成员
static const int y; // 静态常数据成员
};
const int COne::y = 10; // 静态数据成员的初始化
void COne::print()
{ cout<<"x =·1 "<<x<<", y = "<<y<<", r = "<<r<<endl; }
void main()
{
COne one(100);
one.print();
}
(C++)const 常量类型
最新推荐文章于 2022-09-27 12:26:50 发布