【C++】初学者易犯的错误模型(一)

本文探讨了一段C++代码中出现乱码输出的问题,分析了类成员变量初始化的误区,即在构造函数调用前,成员变量的初始化表达式不会再次执行,导致后续赋值操作无法更新依赖于其他成员变量的初始值。文章建议通过添加成员函数来动态计算依赖值,避免此类问题。
摘要由CSDN通过智能技术生成

1、具体问题
如下以下代码所示,为什么这段代码运行时会出现乱码?请通过内存四驱的角度解释?

#include"iostream"
using namespace std;
class circle
{
public:
	double r;
	double pi = 3.1456;
	double area = pi*r*r;  //问题出在这里,请解释?
};

int main()
{
	circle ci;
	cout << "please input r:" <<" ";
	cin >> ci.r;        //输入 10
	cout << ci.area << endl;   // area的值是乱码的数,为什么?
	system("pause");
	return 0;
}

在这里插入图片描述从图中我一看到当程序执行时,这了类的内存分配以及初始化情况,area当后r面输入10时,但出现输出结果是乱码的原因在于,area再初始化时已经执行pirr语句被赋初值,当我们后面给赋新值时,程序并不会再重新执行PIrr语句,因为area已经被初始化。简而言之,当执行ci.r时,程序只会重area中拿值,不会再执行pirr,因此为了解决这个问题,可以在内中添加一个成员函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值