产生问题的场景:
int func(const map<int, string> &aMap) {
string value = amap[0]; }
或者
int Test::func()const
{
string value = amap[0]; //amap是Test类的成员函数.是就会产生传说中的null引用。
}
用g++编译上面的代码,会报……discards qualifiers。
这里是原因。
简单来说,map的[]运算符会在索引项不存在的时候自动创建一个对象,有可能会改变map本身,所以不能够用在一个const map上。
解决办法有两个:
方法1、不要将形参声明为const
方法2、用find代替[]
不过第二中方法存在风险,因为end()->second是合法的,于