| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3632 人关注过本帖
标题:理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。
只看楼主 加入收藏
yang158
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2019-3-12
结帖率:16.67%
收藏
已结贴  问题点数:10 回复次数:3 
理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。

#include <iostream>
using namespace std;
class CPoint
{
public:
    void Set(int x,int y);
    void Print();
private:
    int x;
    int y;
};

void CPoint::Set(int x,int y)
{
    x = x;
    y = y;
}
void CPoint::Print()
{
    cout<<"x="<<x<<",y="<<y<<endl;
}

void main()
{
    CPoint pt;
    pt.Set(10,20);
    pt.Print();
}
问题一:以上程序编译能通过吗,试解释该程序?
答:
问题二:以上程序的运行结构是否正确,如果不正确,试分析为什么,应该如何改正?
答:
搜索更多相关主题的帖子: VC++6.0 运行 int void Set 
2019-04-02 23:46
ZJYTY
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:92
专家分:700
注 册:2018-12-20
收藏
得分:4 
你没有试着运行一下吗?

-------------------------------若有不当之处,敬请谅解-------------------------------
2019-04-03 09:05
yang158
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2019-3-12
收藏
得分:0 
回复 2楼 ZJYTY
运行了啊,结果不对啊
所以要修改
2019-04-04 00:03
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:6 
回复 3楼 yang158
既然运行过了,那为什么还问:
问题一:以上程序编译能通过吗,试解释该程序?

问题二:以上程序的运行结构是否正确?
你只需要问“应该如何改正?”即可。


    x = x;
    y = y;
你不觉得这代码很奇怪?改为
this->x = x;
this->y = y;
试试吧。


另外,整个代码看起来非常外行,一看就知道属于“附魔外道”:
a. 没有构造函数,那 x,y 怎么初始化?也就是定义后,Set之前,其实属于不可使用的状态。
b. Print函数?为什么不一致性的使用C++流?
c. Print函数好歹也加个 const 呀,否则 const CPoint 对象怎么调用 Print ?
程序代码:
#include <iostream>

class CPoint
{
public:
    CPoint();
    CPoint( int x, int y );
private:
    int x_, y_;

    friend std::ostream& operator<<( std::ostream& os, const CPoint& pt );
};

CPoint::CPoint() : x_(0), y_(0)
{
}
CPoint::CPoint( int x, int y ) : x_(x), y_(y)
{
}
std::ostream& operator<<( std::ostream& os, const CPoint& pt )
{
    return os << '(' << pt.x_ << ',' << pt.y_ << ')';
}

using namespace std;

int main( void )
{
    CPoint pt( 10, 20 );
    cout << pt << endl;

    pt = CPoint( 30, 40 );
    cout << pt << endl;

    return 0;
}
因为你使用的是远古时期的VC6,所以我没加“noexcept”修饰,它不认识。
如果你使用现代人所使用的C++编译器,记得加上noexcept。


2019-04-04 08:42
快速回复:理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。
数据加载中...
 
   



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

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