代码如下,请问那句top=&top->topval(stocks[st]) 到底是啥意思,可以具体讲解一下吗?
// ConsoleApplication74.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include "stock20.h"
const int STKS = 4;
int main()
{
stock tocks[STKS] = {
stock("Nanosmart",12,20.0),
stock("Boffo Objects",200,2.0),
stock("Monolithic Obelisks",130,3.25),
stock("Fleep Enterprrises",60,6.5)
};
std::cout << "Stock holdings:\n";
int st;
for (st = 0; st < STKS; st++)
stocks[st].show();
const stock*top = &stocks[0];
for (st = 1; st < STKS; st++)
top = &top->topval(stocks[st]);
std::cout << "\nMost valuable holding:\n";
top->show();
return 0;
}
比较大小,返回大的那个值的实例的指针
const Stock & Stock::topval(const Stock & s) const
{
if (s.total_val > total_val)
return s;
else
return *this;
}
百度下才知道你这是书上的,那个stock20.cpp也不贴。。。
能问问你这是在干啥吗?
const Stock & Stock::topval(const Stock & s) const
{
if (s.total_val > total_val)
return s;
else
return *this;
}
比较stock对象中total_val的大小 反回total_val大的那一个对象的引用,& 这个放在变量之前就是取变量的地址,放在变量之后就是引用变量本身
&top->topval(stocks[st])这个就是取比较大的那一个stock的地址,你这个功能 就是取最大的那个stock
打开#include "stock20.h",应该还有一个stock20.cpp,topval(stocks)的实现应该在这个里面有。
从字面的理解,是找到最大值。
& 是取地址操作符~~~~