为什么没有输出任何值
以下这段代码:程序代码:
#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{
改成这样之后。结果没有输出任何值。为什么会这样?