#include <iostream>
using namespace std;
void main()
{
char s1[]="abc";
char s2[]="abc";
//cout << (s1==s2) <<endl;//0
//s1[1]='x';//编译正确,输出axc
//cout << s1 <<endl;
const char s3[]="abc";
const char s4[]="abc";
//cout <<(s3==s4) <<endl;//0
// s3[1]='x';//编译错误。
char *s5="abc";
char *s6="abc";
//cout << (s5==s6) <<endl;//1
//s5[1]='x';//编译通过,但运行时崩溃。
const char *s7="abc";
const char *s8="abc";
cout << (s6==s7) <<endl;//1
//cout << (s7==s8) <<endl;//1
//s7[1]='x';//编译错误。
}
//
//继而想到常成员函数
//
//继而想到mutable关键字的作用
可见 加入const之后,编译就会帮你挑错。所以导致const char* 会报错,而char * 到运行才会报错。。。。