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

北京市委宣传部seo在哪可以学

北京市委宣传部,seo在哪可以学,wordpress简单吗,成都市建设网站首页一:理解cout的本质 https://legacy.cplusplus.com/reference/iostream/cout/?kwcout 以上官网中对cout的描述如下: 解释: 我们只用知道以下即可: ①:cout 是类 ostream 的对象 ②:作为 ostream 类的对象&#xff…

一:理解cout的本质

https://legacy.cplusplus.com/reference/iostream/cout/?kw=cout

以上官网中对cout的描述如下:

解释:

我们只用知道以下即可:
①:cout 是类 ostream 的对象

②:作为 ostream 类的对象,可以以cout<<的形式写入数据。

③:该对象在头文件 <iostream> 中声明,具有外部链接和静态存储期:它在程序的整个生命周期内存在。

Q:cout<<会自动识别类型的本质是什么?

A:本质是类ostream中已经给你实现好了对于<<操作符的重载,而且对于不同类型的数据都分别进行了<<操作符的重载

---------------------------------------------------------------------------------------------------------------------------------

对于双操作数的运算符的理解:

对于<<的认识:

需知:系统规定双操作数的运算符 第一个参数是左操作数 第二个参数是右操作数

所以:<<是一个双操作数的操作符 第一个参数为左操作数cout 第二个参数为右操作数变量 

---------------------------------------------------------------------------------------------------------------------------------

二:在类中进行<<操作符的重载

假设在日期类中进行<<操作符的重载

①:参数颠倒的情况

类中的声明:

class Date {
public:Date(int year, int month, int day) 
{_year = year;_month = month;_day = day;}void Print() const {printf("%d-%d-%d\n", _year, _month, _day);}void operator<<(ostream& out);private:int _year;int _month;int _day;
};

类外的定义: 

void Date::operator<<(ostream& out) 
{out << _year << "/" << _month << "/" << _day << endl;
}

main函数中的使用:

 

发现main函数中无法使用

 

解释: 

①:如需知所言,所以我们平时写的cout<<d1,cout就是<<的第一个参数,d1是<<的第二个参数,但是当我们像上面那样写,第一个参数是隐藏的this!所以和我们想要的相反(此时d1 << cout 是可以的)

②:所以我们要将<<操作符重载声明和定义都写在类外,这样就避免了第一个参数被this抢占了,也就是全局函数

②:无法访问私有成员变量的情况

类外的声明:

void operator<<(ostream& out, const Date&d);
//而第一个参数不加const是因为 其会改变 记住就行

类外的声明: 

void operator<<(ostream& out, const Date& d) 
{
out << d._year << "/" << d._month << "/" << d._day << endl;
}

解释:此时在声明中就会报错,因为 因为全局函数没有权限访问私有成员变量,所以我们还得加上友元

③:无法连续使用<<的情况

如下:

class Date {
public:friend void operator<<(ostream& out, const Date& d);  // 友元的声明//...private:int _year;int _month;int _day;
};

 

新的问题:

无法 cout << d1 << d2,因为真正的cout可以连续的打印

连续插入 d1 和 d2 实际上就是两次函数的调用,这里先执行的是 cout << d1,

因为调用函数后返回值是 void,void 会做这里的左操作数,

所以当然不支持连续输出了,

解决方案:

我们把返回值改为 ostream 就行,把 out这个对象返回回去。

④:正确的写法

进行如下的改进:

类中的声明: 

class Date {
public:// ...friend ostream& operator<<(ostream& out, const Date& d);    // 友元的声明private:int _year;int _month;int _day;
};

类外的定义: 

#include "Date.h"ostream& operator<<(ostream& out, const Date& d) {out << d._year << "/" << d._month << "/" << d._day << endl;return out;
}

 

int main(void)
{Date d1(2022, 3, 20);Date d2(2021, 5, 1);cout << d1 << d2;return 0;
}

此时在main函数可以连续的打印了 

 

三:在类中进行>>操作符的重载

类中的声明:

class Date {
public:// ...friend ostream& operator<<(ostream& out, const Date& d);friend istream& operator>>(istream& in, Date& d);private:int _year;int _month;int _day;
};

 类外的的定义:

#include "Date.h"istream& operator>>(istream& in, Date& d) {in >> d._year >> d._month >> d._day;return in;
}

 main函数中的使用:

int main(void)
{Date d1(2022, 3, 20);Date d2(2021, 5, 1);printf("请输入两个日期:\n");cin >> d1 >> d2;printf("你输入的日期是:\n");cout << d1 << d2;return 0;
}

解释:和cout类似,cin是istream类的全局对象

 

http://www.dtcms.com/wzjs/357616.html

相关文章:

  • 网站制作的市场前景关键词推广seo
  • app网站开发的特点关键词优化的主要工具
  • 织梦手机端网站字体重叠百度官网登录入口手机版
  • 郑州seo学校深圳seo教程
  • 15个国内互动网站设计欣赏代发推广百度首页包收录
  • 提供常州微信网站建设营销网站建设哪家好
  • 国企网站建设爱站网长尾关键词挖掘工具电脑版
  • 网站开发相关职业岗位广告点击一次多少钱
  • 学校网站模板 dedecms软文例文 经典软文范例
  • 新网站怎么做排名最吸引人的引流话术
  • 做视频网站技术壁垒在哪里公司软文代写
  • 邯郸高端网站建设seo推广招聘
  • 外国人做美食视频网站杭州网站免费制作
  • word做网站全网整合营销外包
  • 软件下载网站如何履行yahoo引擎入口
  • 青岛做网站建设哪家好怎么在百度做免费推广
  • 南充网站建设费用许昌正规网站优化公司
  • 和平手机网站建设长尾关键词爱站网
  • 做片头 网站网站首页制作网站
  • 建设工程施工合同名词解释sem 优化软件
  • 做移动网站多少钱山东企业网站建设
  • 昭阳区建设局网站今日国际新闻大事
  • 教学网站开发网站模板
  • 小创业公司网站怎么做app推广方案怎么写
  • 金属东莞网站建设技术支持百度百科搜索入口
  • 关注建设银行网站成品视频直播软件推荐哪个好一点
  • 建一个电影网站多大 数据库stp营销战略
  • php网站二次开发用什么软件四年级摘抄一小段新闻
  • 柳州企业网站建设公司产品关键词的搜索渠道
  • ppt超链接到网站怎么做网站制作的流程