| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1659 人关注过本帖
标题:为什么没有输出任何值
取消只看楼主 加入收藏
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
收藏
已结贴  问题点数:20 回复次数:2 
为什么没有输出任何值
以下这段代码:
程序代码:
#include<iostream>
#include<string>
class Stock{
private:
    std::string co;
    double gat;
    int total;
public:
    Stock(const std::string s,int i=0,double j=0.0);
    const Stock &val(const Stock &s)const;
    void show()const;
};
void Stock::show()const{
    std::cout<<co<<std::endl<<total<<std::endl<<gat;
}
Stock::Stock(const std::string s,int i,double j){
    co=s;
    total=i;
    gat=j;
}
const Stock &Stock::val(const Stock &s)const{
    if(s.total>total)
        return s;
        else
        return *this;
}

int main(){
    Stock stock1[4]={
        Stock("skg",4,7.7),
        Stock("skgjg",5,3.9),
        Stock("irgnj",33,5.7),
        Stock("eiur",4,5.7)
    };
    const Stock *p=&stock1[0];
    for(int i=1;i<4;i++){
        p=&p->val(stock1[1]);
    }
    p->show();
    return 0;
}

输出结果为:
skgjg
5
3.9

当我将其中这段代码:
const Stock &val(const Stock &s)const;

改为:
const Stock &val(const Stock s)const;

并且将这段代码:
const Stock &Stock::val(const Stock &s)const{

改为:
const Stock &Stock::val(const Stock s)const{

改成这样之后。结果没有输出任何值。为什么会这样?
搜索更多相关主题的帖子: int total std 输出 const 
2021-04-15 18:10
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
收藏
得分:0 
回复 2楼 rjsp
如果改为如下:
程序代码:
#include<iostream>
#include<string>
class Stock{
private:
    std::string co;
    double gat;
    int total;
public:
    Stock(const std::string s,int i=44,double j=55);
    const Stock val(const Stock &s)const;
    void show()const; 
};
void Stock::show()const{
    std::cout<<co<<std::endl<<total<<std::endl<<gat;
}
Stock::Stock(const std::string s,int i,double j){
    co=s;
    total=i;
    gat=j;
}
const Stock Stock::val(const Stock &s)const{
    if(s.total>total)
        return s;
        else
        return *this;
}

int main(){
    Stock stock1[4]={
        Stock("skg",46,77.7),
        Stock("skgjg",5,3.9),
        Stock("irgnj",33,5.7),
        Stock("eiur",4,5.7)
    };
    const Stock *p=&stock1[0];
    for(int i=1;i<4;i++){
        p=&p->val(stock1[1]);
    }
    p->show();
    return 0;
}

这时s.total<total。返回*this。这时返回的也是临时对象,函数调用结束后就不存在了,应该没有输出任何值才对,为什么仍然有输出值?输出结果为:
图片附件: 游客没有浏览图片的权限,请 登录注册

而且字符串没了,只有两个值。为什么会这样?


[此贴子已经被作者于2021-4-18 04:13编辑过]

2021-04-18 04:10
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
收藏
得分:0 
以下是引用rjsp在2021-4-20 08:44:12的发言:

*this 不是临时对象,就是这个类对象自身

那为什么只输出46和77.7。而没有输出字符串skg
2021-04-20 12:39
快速回复:为什么没有输出任何值
数据加载中...
 
   



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

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