const 与 volatile在语法上是相同的。但语义是不一样。它们一对有趣的东东。
例子1: 关于指针
char* a = “hello world!”;
const char* b = a;
char* const c = a;
a = b; //error! or warning 较为严格的编译器应该是错误.
a = c;
volatile char* d = a;
char* volatile e = a;
a = d; //error! or warning 较为严格的编译器应该是错误.
a = e;
例子2: 关于被typedef的指针类型
typedef char* char_pointer_type;
char_pointer_type a = “hello world!”;
const char_pointer_type b = a;
char_pointer_type const c = a;
a = b;
a = c;
volatile char_pointer_type d = a;
char_pointer_type volatile e = a;
a = d;
a = e;
通过,可见被typedef类型被视为一个整体。关键字置前置后无所谓,都表示是此类型的常量(对const来说)。volatile不知该称怎么称呼它。
例3:关键字对方法的作用
class object
{
public:
void doing()
{
cout << “doing usually.“ << endl;
}
void doing() const
{
cout << “const object doing.“ << endl;
}
void doing() volatile
{
cout << “volatile object doing“ << endl;
}
//不晓得volatile和const混合起来怎么写,语义上好像不存在.
};
void main()
{
object * po = new object;
const object* pco = po;
volatile object* pvo = po;
po->doing();
pco->doing();
pvo->doing();
}
//可以尝试一下用例1,例2中的指代方法来调用doing方法。看看效果。
浙公网安备 33010602011771号