类/指针/函数/this
来源:互联网 发布:内核源码的配置文件 编辑:程序博客网 时间:2024/05/18 12:37
这几个元素加一块,如果对其不是很理解,怕是看不懂源码。我们首先看三段代码:
1、定义:
#ifndef STOCK_H_
#define STOCK_H_
#include"stdafx.h"
#include<string>
class Stock
{
private:
std::string company;
int shares;
double share_val;
double total_val;
void set_tot() { total_val = shares *share_val; }
public:
Stock(); // default constructor
Stock(const std::string & co, long n =0, double pr = 0.0);
~Stock(); // do-nothing destructor
void buy(long num, double price);
void sell(long num, double price);
void update(double price);
void show()const;
const Stock & topval(const Stock & s)const;
};
#endif
2、实现
constStock & Stock::topval(const Stock & s) const
{
if (s.total_val > total_val)
return s;
else
return *this;
}
3、应用
const int STKS = 4;
int main()
{
// create an arrayof initialized objects
Stock stocks[STKS] = {
Stock("NanoSmart", 12, 20.0),
Stock("Boffo Objects", 200,2.0),
Stock("Monolithic Obelisks",130, 3.25),
Stock("Fleep Enterprises",60, 6.5)
};
std::cout << "Stockholdings:\n";
int st;
for (st = 0; st < STKS; st++)
stocks[st].show();
// set pointer tofirst element
const Stock * top = &stocks[0];
for (st = 1; st < STKS; st++)
{
top = &top->topval(stocks[st]);
// now top points tothe most valuable holding
std::cout << "\nMost valuableholding:\n";
top->show();
}
// std::cin.get();
return 0;
}
我们只需关注红色的部分的代码,这三个代码最终的实现,就是按大小顺序把三个对象的最终的total_val值排序显示,如图:
先看第一部分代码:const Stock & topval(const Stock& s) const;
首先在Stock类里,定义一个Stock &类型的的函数,同时传递Stock&类型的的参数,这里我们可以对比定义int & fun(int & a)函数来理解这个函数的定义,即此函数传递一个一个Stock类的对象,返回的是Stock &类型的值。给一个参考链接来理解这里的 &符号:http://blog.csdn.net/stpeace/article/details/40274553
再看第二段代码的函数实现:
constStock & Stock::topval(const Stock & s) const
{
if (s.total_val > total_val)
return s;
else
return *this;
}
由于在类里,函数的作用域为该类,所以引用是:Stock::topval(),同时添加该函数的类型:const Stock &。(对比bool Stock::fun()形式,这里的bool等价于constStock &功能),在函数里,如果引用的对象里的total_val大于该类的对象(该对象就是初始对象,在第三段代码里可以看到是stocks[0])就返回引用的对象,否则返回该对象,这里用*this来指代该对象。至于在函数中什么时候用&,什么时候*还是参考上述的链接,而且我觉得很有必要在以后的笔记中记述这一点!
- 类/指针/函数/this
- 类 this指针 const成员函数
- this指针 构造函数
- 基类函数的this指针和派生类函数的this指针
- 一般函数指针和类的成员函数指针 (this指针)
- 构造函数中的this指针
- this指针和函数调用
- js函数及this指针
- 成员函数和this指针
- 构造函数和this指针
- this指针与构造函数
- this指针和构造函数
- 构造函数与this指针
- this指针和常函数
- c++ 类成员函数内删除this指针
- 类和六个默认函数及this指针
- this指针在类成员函数中用法
- 细说 class类中的this指针与 构造函数
- java中解决double计算精度不准确问题
- 355. Design Twitter
- Jquery和JS获取ul中li标签
- 解答“压缩图片接口能压缩网络图片吗”
- Hibernate框架学习(第三讲)---Hibernate注解以及ID生成策略
- 类/指针/函数/this
- 单片机设计与开发
- 扫码功能代码
- 1、Web Services 简介
- redhat在vm扩展磁盘容量
- Android开发百度地图详细操作
- 注意:不能将文件名叫做email.py,否则会报 ImportError: No module named mime.text
- Android四大组件
- 连接池中的maxIdle,MaxActive,maxWait参数