#include<iostream>
#include<string>
using namespace std;
class A
{
private:
int y;
public:
A(){
y=0;
}
int f1(int x) const // 此const代表此function不可以修改Data Member
{
x++;
// y++; // Error! y為Data Member,因此不可以修改
return y;}
const int f2(int x) // 回傳值為const
{
x++;
y++;
return y;
}
int f3(int const x) // 參數為const
{
// x++; // Error! x為const,不可以修改
y++;return y;
}
void f4(int const *x) // x is variable pointer to a constant integer,也可以寫成f4(const int *x)
{
// (*x)++; // Error! pointer x所指向的實體為const,因此不可以修改其值
*x++; // 此行的意思是*(x++),先修改pointer x的值,在指向實體
}
void f5(int const &x) // x is variable reference to a constant integer
{
// x++; // Error! x就是一個const
}
void f6(int *const x) // x constant pointer to a variable integer
{
(*x)++;
// *x++; // Error! Constant pointer x 不可以指向其他實體
}
const char * f7() // 回傳一個variable pointer to a constant char
{
return "ABC";
}
void f8(const int * const x) // x is constant pointer to a const integer
{
// (*x)++; // Error! x所指向的實體為const,因此不可以修改其值
// *x++; // Error! Constant pointer x 不可以指向其他實體
}
};
int main(){
A a;
int x=3;
a.f1(x);a.f2(x);
a.f3(x); // int x 會自動轉成const int x傳入
a.f4(&x) ;a.f5(x) ;
const char *s = a.f7(); // 必須使用一個const來接const
// s[0]='0'; // Error! 無法對const 變數進行改變動作
return 0;
}
Reference: http://duramecho.com/ComputerInformation/WhyHowCppConst.html
1 則留言:
謝謝你!
這篇讓我釐清很多const的觀念!
張貼留言