类中不写成员函数_易犯错误类型

1、错误代码

#include "iostream"

using namespace std;

class circle
{
public:
    double r;
    double pi = 3.1415926;
    double area = pi*r*r;
};

int main()
{
    circle c1;

    cout << "please input your r:" << endl;

    cin >> c1.r;

    cout << "area is " << c1.area << endl;

    return 0;

    system("pause");
}

如果此时键盘输入r的值,你会发现area是一个随机值,并不是你想要的那个结果。

28c0e80980da5da2d40091feb3edb2cff67.jpg

 

2、分析

通过内存四区的模型来分析,当类circle定义的时候,并不会分配内存。

当用类circle定义一个变量c1时,这时会为c1分配内存并初始化这个变量。初始化情况c1.r是一个随机值,c1.pi是3.1415926,c1.area也是一个随机值。

在对c1.r做输入改变的时候,并没有去改变c1.area,所以c1.area还是一个随机值。

7d3db2472af74948a41d8281e3740df66ab.jpg

 

当c1.area执行的时候,只是从变量的内存空间里读取数据,并没有执行pi*r*r。

正确的做法是在类里面定义一个成员函数,函数里面执行操作,这样调用的时候就会执行操作了。

如下:

#include "iostream"

using namespace std;

class circle
{
public:
    double r;
    double pi = 3.1415926;
    double area = pi*r*r;

    double getS()
    {
        area = pi*r*r;
        return area;
    }
};

int main()
{
    circle c1;

    cout << "please input your r:" << endl;

    cin >> c1.r;

    cout << "area is " << c1.area << endl;//乱码,随机值

    cout << "area is " << c1.getS<< endl;//正确

    return 0;

    system("pause");
}

 

转载于:https://my.oschina.net/u/4125956/blog/3047265

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值