标题:1.非常对象用什么方式调用常函数(非常函数存在的情况下)2.在Show函数用++ ...
只看楼主
winnie96
Rank: 2
等 级:论坛游民
帖 子:51
专家分:86
注 册:2015-12-14
结帖率:53.85%
已结贴  问题点数:6 回复次数:6 
1.非常对象用什么方式调用常函数(非常函数存在的情况下)2.在Show函数用++radius,为什么getAeas函数值发生变化。
#include <iostream>
using namespace std;

class Circle
{
    private:
        double radius;
        const double PI;
    public:
        Circle(double n):radius(n),PI(3.1415925){
        }        
        void Set(double n){
            radius=n;
        }
        double getArea()const
        {
            return PI*radius*radius;
        }
        void Show();
        void Show()const;
};

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void Circle::Show()
{
    cout<<getArea()<<"非常成员函数"<<++radius<<endl;
     
}
void Circle::Show ()const
{
    cout<<getArea()<<"常成员函数"<<radius<<endl;
}
int main(int argc, char *argv[]) {
   
    Circle c1(2);
    c1.Show();
    Circle const c2(2);
    c2.Show();
    return 0;
}
搜索更多相关主题的帖子: private include public system double 
2016-03-22 13:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:6 
1.非常对象用什么方式调用常函数(非常函数存在的情况下)
((const Circle&)c1).Show();

2.在Show函数用++radius,为什么getAeas函数值发生变化。
cout<<getArea()<<"非常成员函数"<<++radius<<endl; 先执行getArea()还是++radius属于“未指定行为”
2016-03-22 14:34
winnie96
Rank: 2
等 级:论坛游民
帖 子:51
专家分:86
注 册:2015-12-14
得分:0 
回复 2楼 rjsp
那怎样指定行为??
2016-03-22 14:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用winnie96在2016-3-22 14:57:21的发言:

那怎样指定行为??
听不懂你在问什么,请讲清晰完整的话
2016-03-22 14:59
winnie96
Rank: 2
等 级:论坛游民
帖 子:51
专家分:86
注 册:2015-12-14
得分:0 
以下是引用rjsp在2016-3-22 14:34:27的发言:

1.非常对象用什么方式调用常函数(非常函数存在的情况下)
((const Circle&)c1).Show();

[quote]2.在Show函数用++radius,为什么getAeas函数值发生变化。
cout<<getArea()<<"非常成员函数"<<++radius<<endl; 先执行getArea()还是++radius属于“未指定行为

[/quote]
2016-03-22 15:03
winnie96
Rank: 2
等 级:论坛游民
帖 子:51
专家分:86
注 册:2015-12-14
得分:0 
回复 4楼 rjsp
怎样才能使它先执行gerArea函数最后radius自增1.?
2016-03-22 15:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
怎样才能使它先执行gerArea函数最后radius自增1.?
cout<<getArea();
cout<<++radius;

“未指定行为”就是C/C++标准中的 unspecified-behavior
想让某行为不再是未指定行为,除非你能让C++标准委员会修改C++标准。
2016-03-22 15:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-462774-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.171446 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved