#include<iostream>
using namespace std;
class A{
int i;
public:
A():i(0){}
void f() {cout<<"f()"<<endl;}//f(A* this)
void f() const {cout<<"f() const"<<endl;}//f(const A* this)
//以上两个函数构成overload的条件,参数不同
};
int main(){
const A a;//因为a是const,调用f() const函数
a.f();
return 0;
}
#include<iostream>
using namespace std;
class A{
const int i;//const int i必须要初始化,因为之后无法修改
public:
A():i(0) {} //初始化函数 i=0
//A() {} 没有初始化i,会报错
void f() {cout<<"f()"<<endl;}
void f() const {cout<<"f() const"<<endl;}
};
int main(){
const A a;
a.f();
return 0;
}
class HasArray{
const int size;
int array[size]; //错误,const变量不能作为数组的值
};
解决方法:
class HasArray{
static const int size=100;//size不能被改变
int array[size]; //正确
};
class HasArray{
enum{size=100}; //枚举类型,size不能被改变
int array[size]; //正确
};