当前位置: 首页 > news >正文

哪两个数字域名是做医疗信息网站的做网站外包公司名称

哪两个数字域名是做医疗信息网站的,做网站外包公司名称,龙岗网站建设技术,西安的商城网站通常情况下,类的成员函数都只涉及一个对象,即调用它的对象。但有时候方法可能涉及到两个对象,在这种情况就需要使用到C的this指针。 class Stock { private: ... double total_val; ... public: double total() const {return total_val;} }…

通常情况下,类的成员函数都只涉及一个对象,即调用它的对象。但有时候方法可能涉及到两个对象,在这种情况就需要使用到C++的this指针。

class Stock
{
private:
...
double total_val;
...
public:
double total() const {return total_val;}
}

如上述类,total_val为私有成员,外部程序不可以直接访问该数据成员,只能通过total()方法获取total_val值。如果要知道哪个Stock对象total_val的值最大,方法一是对象调用total()方法来较total_val值。
另外一种方法就是使用this指针。定义一个成员函数,该函数可以查看两个Stock对象,并返回total_val值较高对象的引用。拟定成员函数名为topval(),stock1.topval()访问stock1对象的数据成员;stock2.topval()访问stock2对象的数据成员。要对两个对象进行比较,则必须将其中一个对象作为参数,传递给成员函数topval(),则topval()的参数类型应为const Stock &(出于效率原因选择使用引用来传递参数)。topval()需要返回total_val值较大的对象,则可以直接返回一个Stock对象的引用。topval()方法的原型如下:

const Stock & topval(const Stock & s)const;

topval()方法隐式的访问一个对象,显式地访问一个对象,并返回其中一个对象的引用。括号中的const表示该函数不会修改被显式访问的对象;括号后面的cosnt表明,该函数不会修改被隐式访问的对象。由于该函数返回了两个const对象之一的引用,因此返回类型也应使用const修饰。

假设都要对Stock对象stock1和stock2进行比较,将total_val值较大的对象赋值给top对象,可以使用以下两条语句实现:

top = stock1.topval(stock2);
top = stock2.topval(stock1);

第一种格式:隐式地访问stock1,显式地访问stock2;第二种格式:隐式地访问stock2,显式地访问stock1。无论使用哪一种格式,都会返回total_val值较大的那个对象。

C++中this指针指向用来调用成员函数的对象(this被作为隐藏参数传递给方法)。stock1.topval(stock2);语句将this设置为stock1对象的地址。一般来说,类方法都将this指针设置为调用它的对象的地址。topval()中的total_val只不过是this->total_val的简写。topval()的实现如下:

const Stock & Stock::topval(const Stock & s)const
{if(s.total_val > total_val)return s;elsereturn *this;
}

特别提醒: 每个成员函数(包括构造函数和析构函数)都有一个this指针。this指针指向调用对象。如果方法需要引用整个调用对象,则可以使用表达式 * this 。在函数的括号后面使用const限定符将this限定为const,这样就不能使用this来修改对象的值。this是对象的地址,而不是对象本身。* this才是对象本身, * this可以作为调用对象的别名。( * this将解除引用运算符*用于指针,将得到指针指向的值)

示例代码如下:
1、定义文件stock20.h

//stock20.h--augmented version
#pragma once
#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();Stock(const std::string & c0, int n = 0, double pr = 0.0);~Stock();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;
};

2、实现文件stock20.cpp

//stock20.cpp--augement version
#include "stock20.h"
#include <iostream>
Stock::Stock()
{company = "no name";shares = 0;share_val = 0.0;total_val = 0.0;
}
Stock::Stock(const std::string& co, int n, double pr)
{company = co; if (n < 0){std::cout << "Number of shares can't be negative;"<< company << " shares set to 0.\n";shares = 0;}elseshares = n;share_val = pr;set_tot();
}
Stock::~Stock()
{
}
void Stock::buy(long num, double price)
{if (num < 0){std::cout << "Number of shares purchased can't be nagative." << "Transacyion is aborted.\n";}else{shares += num;share_val = price;set_tot();}
}
void Stock::sell(long num, double price)
{using std::cout;if (num < 0){cout << "Number of shares sold can't be nagative."<< "Transaction is abored.\n";}else if(num > shares){cout << "You can't sell more than you have! "<< "Transaction is aborted.\n";}else{shares -= num;share_val = price;set_tot();}
}
void Stock::update(double price)
{share_val = price;set_tot();
}
void Stock::show()const
{using std::cout;using std::ios_base;//set format #.###ios_base::fmtflags orig = cout.setf(ios_base::fixed, ios_base::floatfield);std::streamsize prec = cout.precision(3);cout << "Company: " << company << "Shares: " << shares << '\n';cout << "Shares Price:$" << share_val;//set format to #.##cout.precision(2);cout << " Total Worth:$" << total_val << '\n';//restore original formatcout.setf(orig, ios_base::floatfield);cout.precision(prec);
}
const Stock & Stock::topval(const Stock & s)const
{if (s.total_val > total_val)return s;elsereturn *this;
}

3、使用文件usestok2.cpp

//usestock2.cpp-- using the Stock class
//compilewith stock20.cpp
#include <iostream>
#include "stock20.h"int main()
{Stock kate("NanoSmart", 12, 20.0);kate.show();Stock joe("Fleep Enterprises", 60, 6.5);joe.show();Stock top = kate.topval(joe);std::cout << "\nMost valuable holding:\n";top.show();return 0;
}

this指向调用对象

代码运行结果:joe的total_val 值比kate的total_val 值大,故top=joe。
代码运行结果

http://www.yayakq.cn/news/485181/

相关文章:

  • 迷失传奇网站naocq专业从事网站开发公司
  • 东平县建设局网站深圳专业营销网站制作
  • wordpress不支持中文标签晨阳seo顾问
  • 浙江银安建设有限公司网站四川煤矿标准化建设网站
  • 做网站图片ps用哪种字体太原搜索引擎优化
  • 网站管理的含义达州住房和城乡建设部网站
  • 企业网站首页设计欣赏网站建设网站优化
  • 无锡企业网站建设费用建一个商城网站多少钱
  • 学校网站建设整改报告如何在百度做自己公司的网站
  • 百度上做网站推广南沙网站建设哪家好
  • 响应式网站模板免费下载大数据平台
  • 苏州门户网站wordpress怎么优化进程
  • 怎样做网站域名注册wordpress密码看文章
  • 安徽商城网站建设无锡手机网站建设
  • 重庆网站建设方案详细方案网站和app区别与联系
  • 做网站还有流量么什么网站可以做会计题目
  • 网站建设公司南宁建设网站目的及功能定位是什么
  • 网站建好用电脑做服务器四川省建设厅网站为什么打不开
  • 国内做的好的网站wordpress大战
  • 好的产品设计网站上海建设网站服务
  • 外贸网站建设公司方案网站建设属于
  • 湖北省建设局网站成都好网站
  • 网站如何调用微博济南手机网站建设专业定制
  • 网站主题模板下载不了工程师招聘网站
  • 中国十大网站建设公司久久建筑网官网平台
  • 杨行网站建设互联网装修公司排行榜
  • 站长之家短链接生成电子上网站建设与维护
  • 做图专业软件下载网站有哪些攻击网站的方法
  • 北京建设工程招标公告网站郑州 网站建设 东区
  • 自适应网站开发文字大小如何处理网站备案服务内容