C++学习问题记录

1、无法将参数“const char[]”转换成“char*”

参考文章
高版本的vs中会出现这个问题,我的vs版本是2019.
解决方案:
在【项目属性】窗口中的【C/C++】-【语言】-【符合模式】-改为【否】。
C++学习问题记录_第1张图片

2、关于C++中重载后置++和重载流插入运算符

参考链接
重载流插入原代码情况如下:

ostream& operator << (ostream& o, Point& p) {
	o << '(' << p._x << ", " << p._y << ')';
	return o;
}

main函数使用报错:

cout << p++ << endl;

在这里插入图片描述
没有与这些操作数匹配的“<<"运算符。
解决办法:
重载流插入代码改为:

ostream& operator << (ostream& o, const Point& p) {
	o << '(' << p._x << ", " << p._y << ')';
	return o;
}

分析原因:
p++是一个表达式,返回的是一个临时值,这个类型不可引用。
引用正常不能引用右值,C++11之后的右值引用&&除外,加了const就可以引用右值了,例如const int &a = 1是正常的,而int &a = 1是非法的

3、溢出报错

Line 1061: Char 9: runtime error: addition of unsigned offset to 0x7ffc7c7f77a0 overflowed to 0x

分析原因:
下标可能溢出或者小于0。
解决办法(举例):

int num=s.length();
for(int i=0;i

此处会报错,可以更改为:

int num=s.length();
for(int i=0;i0 && s[i-1] != 'B')
			num ++;
		break;
	}
}

4、expression is not assignable

分析原因:
可能是判断的时候“==”变成“=”了。

5、string类型赋值报错

原代码:

char c = "a";
stirng str="";
for(int j=0;j<5;j++){
	str[j]=c;
}

分析原因:
size无法自主扩展
解决办法:

char c = "a";
stirng str="";
for(int j=0;j<5;j++){
	str=str+c;
}

你可能感兴趣的:(C++,c++)