原來的錯誤程序:
class C
{
private:
int x;
public:
C(int x){this->x = x;}
int getX(){return x;}
};
void main()
{
const C c(5);
cout<<c.getX();
system("pause");
}
修改後的程序一:
#include<iostream>
using namespace std;
class C
{
private:
int x;
public:
C(int x){this->x = x;}
int getX(){return x;}
};
void main()
{
C c(5);//去掉const,常對象不能引用非const型的成員函數
cout << c.getX() << endl;
system("pause");
}
二:
#include<iostream>
using namespace std;
class C
{
private:
int x;
public:
C(int x){this->x = x;}
int getX() const {return x;}//將成員函數聲明爲const型,定義的常對象才能引用它
};
void main()
{
const C c(5);
cout << c.getX() << endl;
system("pause");
}
經驗積累:
1.要分清對象與成員函數之間是否可以調用,常對象中的數據成員爲常變量切必須要有初值
2.常對象不能調用該對象的const成員函數,如果將常成員函數聲明爲const型後就可以了
3.調用關係:1)常對象只能調用const成員函數
2)一般的成員函數可以引用本類中的非const數據成員,也可以修改他們
3)常成員函數只能引用本類中的數據成員(可以使const數據成員,也可以是非const數據成員),而不能修改他們
上機感言:
主要是考察隊常對象、常成員函數和常數據成員之間的關係....有點亂