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

合肥网站建设排名龙岩网站建设极速建站

合肥网站建设排名,龙岩网站建设极速建站,做网站代理,江苏省和住房城乡建设厅网站目录 前言 一 this指针 二 对象数组 三 类作用域 总结 前言 接着上一篇继续 一 this指针 我们可能看到这个this指针是不知道干什么的,但是我们可以通过一个问题来引入这个,就比如我们上一章的程序,我们知道是用来计算股票的&#xf…

目录

前言

一  this指针

 二  对象数组

三  类作用域

总结


前言

接着上一篇继续


一  this指针

我们可能看到这个this指针是不知道干什么的,但是我们可以通过一个问题来引入这个,就比如我们上一章的程序,我们知道是用来计算股票的,那么我如果要比较两个股票的总值最大要怎么比较呢?我们下面来分析一下

我们首先需要一个方法来比较这两个数值的大小
所以我们就要在类里面设置一个方法来比较大小
首先我们要有一个这个函数原型

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

这个就是我们用来计算总和的函数原型,我们来分析一下
首先我们这个函数用出来之后,是隐式了是用调用这个函数的那个对象里面的私有值,就是谁调用了这个函数就使用了那个私有值这个是隐式访问但是我们传过来的对象是显式访问,为什么呢?因为它传过来我们就可以使用对应得私有值

然后这个末尾得const有什么等等会奖

当我们去编写这个函数的时候

const Stock& Stock::topval(const Stock& s) const {if (total_vale < s.total_vale)return s;else}

 我们会发现我们可以去饭返回对应的对象,但是好像不可以返回自己,这个要怎么办,因为自身式隐式的,所以这个时候就引入了this指针,这个this指针就是用来指向你所调用那个对象的,这个时候这个指针式指向地址,所以我们只要对它进行解引用就好了,这个this指针是你构造这个类的时候就会有,不用自己去编写

就是这样子

const Stock& Stock::topval(const Stock& s) const {if (total_vale < s.total_vale)return s;else*this;
}

所以这个this指针是用来返回自己的

博主当时阅读书籍的时候在想,为什么这个我只要把这个对象传进去就可以访问这个对象的private里面的数据呢?这个不是相互独立的吗?

在C++中,如果您有一个对象 obj1 的成员函数,并且该函数需要访问另一个对象 obj2 的私有数据,您可以通过将 obj2 作为参数传递给 obj1 的成员函数来实现这一点

这里的关键点是:

  1. 成员函数的访问权限:类的成员函数可以访问该类的所有成员,包括私有成员。这是由类的封装性决定的,成员函数是类定义的一部分,因此它们有权访问类的所有内部数据

  2. 参数传递:当您将 obj2 作为参数传递给 obj1 的成员函数时,该成员函数可以访问 obj2 的所有公共、保护和私有成员。这是因为参数 obj2 在函数内部被视为其所属类的实例,因此函数可以像访问任何其他实例一样访问其成员

这就很TM神奇你知道吧

所以这个this指针是用来进行对象与对象之间的联系的

 二  对象数组

我们直接通过程序来理解这个对象数组是最好的

#include<iostream>
#include"cool.h"//表示公司首次购买股票
Stock::Stock(const std::string& co, long 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;}else {shares = n;share_vale = pr;set_tol();}
}Stock::~Stock() {std::cout << "bey bey" << company <<std::endl;
}//增加股票
void Stock::buy(long num, double price) {if (num < 0) {std::cout << "Number of shares can't be negative;"<< "Transaction is aborted.\n";}else {shares += num;share_vale = price;set_tol();}
}//减少股票
void Stock::sell(long num, double price) {using std::cout;if (num < 0) {std::cout << "Number of shares can't be negative;"<< "Transaction is aborted.\n";}else if (num > shares) {cout << "You can't sell more than you have!"<< "Transaction is aborted.\n";}else {shares -= num;share_vale = price;set_tol();}
}//更新
void Stock::update(double price) {share_vale = price;set_tol();
}//展示
void Stock::show() const {std::cout << "compay: " << company << " "<< "shares:" << shares << '\n'<< " share price: $" << share_vale<< " total worth: $" << total_vale << '\n';
}const Stock& Stock::topval(const Stock& s) const {if (total_vale < s.total_vale)return s;elsereturn *this;
}
#include<iostream>
#include"cool.h"
using namespace std;int main() {Stock a[5]{Stock("cat",10,19.19),Stock("dog", 7, 17.13),Stock("bear", 9, 11.13),Stock("cow", 6, 10.19),};for(int i = 0; i < 4;i++) {a[i].show();cout << endl;}const Stock* top = &a[0];for (int i = 1;i < 4;i++) {top = &a->topval(a[i]);}top->show();/*return 0;*/int cc = 10;if (cc > 11)cout << a;
}

这个就是我们设置对象数组,然后进行比较

三  类作用域

在类中定义的名称(如类数据成员名和类成员函数名)的作用域都为整个类,作用域为整个类的名称只在该类中是己知的,在类外是不可知的。因此,可以在不同类中使用相同的类成员名而不 会引起冲突,类作用域意味着 不能从外部直接访问类的成员,公有成员函数也是如此。 也就是说,要调用公有成员函数,必须通 过对象

我们在定义方法的时候,在前面一定要写上这个类的名字和::这个作用域运算符,才可以算是写了这个类里面的成员函数

然后我们在调用这个类里面的成员函数是需要进行运用.,->,::这里三个运算符号的

当我们在使用类的时候,我们假设类里面要用到一个常量,如果每次都是开辟一个的话,那是不是太浪费内存了,能不能让这个常量变成公有的,这样不就可以节省内存吗?

首先我么最先想到的就是这个方案,但是这个方案其实是行不通的
因为声明类只是描述了对象的形式,并没有创建对象,也就是说这个值是存放在这个对象里面的。因此,在创建对象前,将没有用于存储值的空间(实际上, C++11提供了成员初始化, 但不适用于前述数组声明)这个会在后面进行讲解

所以我们有两个方法
1  运用枚举

这个枚举的意思就是说我么在编译的时候就已经吧这个month替换为了12,所以不存在上面这个问题

2  运用static关键词

这个是把这个变量放到只读数据段里面,并不是放在对象里面,那么就不会产生错误


总结

剩下的抽象数据在我的数据结构里面有,这里就不讲了

现在我们学习了this指针,对象数组和类的作用域和常量该怎么处理

http://www.dtcms.com/a/527166.html

相关文章:

  • 网站使用帮助建设银行辽宁省分行网站
  • 烟台广告公司网站建设东莞智通人才网首页
  • 网站文章发布网络推广和网络运营
  • 深圳网站建设李天亮网页版哔哩哔哩怎么下载视频
  • 网站开发到上线需要多久超市建网站
  • 自己做网站卖二手车网站配色表
  • 游戏网站建设与策划网站建设优劣的评价标准
  • php网站成品中国移动官方官网
  • 电商网站做互联网金融15个平面设计图素材网站
  • seo排名工具站长广东阳江最新消息
  • 网站开发要什么样的环境wordpress数据库结构
  • 如何提高网站seo排名极速微网站建设cms
  • 贵州建设厅二建考试网站上海外贸出口代理公司
  • 宁波网站seo定制网站建设的书籍
  • 搜寻的网站有哪些重庆营销型网站开发公司
  • 网站右侧浮动寮步建设网站
  • phpcms 多语言网站苏州专业高端网站建设公司
  • 网站开发代理合同写wordpress博客程序
  • 微电影网站源码xiazai做官网的步骤
  • 青岛网站建设eoe手机赚钱一天400元
  • 网站建设企业公司正规营销型网站培训中心
  • 专做婚礼logo的网站门户网站建设需要多少钱
  • 四川网站建设公司 会员登录南宁模板做网站
  • 网站建设策dw php免费一天赚500元游戏
  • 刚学做网站怎么划算做网站每一步的是什么
  • 中高风险地区名单seo0577
  • 保定建设银行网站首页昆山做百度网站
  • 网络推广和网站推广怎么用云虚拟主机建设网站
  • 免费一键搭建网站网站运营与数据分析
  • 江门网站优化做游戏的软件app