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

公司网站申请书爱给网

公司网站申请书,爱给网,免费做图素材网站有哪些,厦门关键词排名提升问题引入 cout << (uf.is_same_set(x, y)) ? Y : N<<endl; 请问大家&#xff0c;这条语句对吗&#xff1f;&#xff08;这里的uf.is_same_set(x, y)是一个自定义函数&#xff0c;返回bool值&#xff1b;所以不是问题的关键&#xff09;》 答案是这条语句报错了…

问题引入

cout << (uf.is_same_set(x, y)) ? 'Y' : 'N'<<endl;

请问大家,这条语句对吗?(这里的uf.is_same_set(x, y)是一个自定义函数,返回bool值;所以不是问题的关键)==》

答案是这条语句报错了。我再写了以下的语句,却能准确无误。

  cout << ((uf.is_same_set(x, y)) ? 'Y' : 'N') << endl;

为什么呢? ==》

1.这是因为第一条语句中,<<的优先级会高于三目运算符,即它先返回的是 ostream&;

然后会再执行ostream?'Y':'N'部分;三目判断返回'Y'

但是'Y' 是 char 类型,不是一个可以用 << 运算的对象。

2.cout << ((uf.is_same_set(x, y)) ? 'Y' : 'N') << endl; 这个表达式会先执行三目,返回‘Y’或者‘N’;然后变为:cout<<'Y'<<endl; 所以就没有错。

基于这个问题,我们今天就来聊聊cout

cout是什么?

cout 是一个全局的 输出流对象,本质上是 ostream 类的一个实例,通过 运算符重载(operator<<,实现了类似 cout << x 这样的打印效果。

此外还有其他流对象是:

名称类型功能
cinistream标准输入流
cerrostream错误输出流
clogostream日志输出流

为什么能用 << 打印?

这是 C++ 的经典设计:通过重载运算符 <<(插入运算符)来模拟输出操作。它的原型类似于这样:即它使重载的运算符函数;

ostream& operator<<(ostream& os, int value);
ostream& operator<<(ostream& os, const char* str);
ostream& operator<<(ostream& os, char c);
ostream& operator<<(ostream& os, double d);
ostream& operator<<(ostream& os, bool b);
// 等等,针对不同类型都做了重载

这就意味着你可以这样使用:

cout << "Hello" << ' ' << 42 << ' ' << true;

它的底层执行顺序是:

cout << "Hello"          // 返回 ostream&<< ' '             // 继续插入<< 42              // 继续插入<< ' '             // ...<< true;           // 一连串流式操作

因为每次 << 都返回 ostream&,所以可以链式调用。


输出是怎么“流”到控制台的?

cout 内部持有一个缓冲区(buffer),你每调用一次 <<,其实是将数据写入这个缓冲区。只有当你:

  • 显式使用 endl(刷新并换行);

  • 或缓冲区满;

  • 或程序结束前清理资源;

才会真正把内容输出到终端控制台所以我们便能理解下面两条语句的区别了。

cout << "hello\n";       // 可能只是写进缓冲区
cout << "world" << endl; // 此时强制刷新缓冲区

endl 是什么?

endl 是一个特殊的东西,它不是字符串,而是一个 函数指针,原型是:

ostream& endl(ostream& os);

它的作用是:

  1. 向流中插入一个换行符(\n);

  2. 刷新缓冲区(flush);

所以cout << "Hello" << endl; 等价于:

cout << "Hello";
cout.put('\n');
cout.flush();

自定义类型如何支持 << 输出?

你可以为你的类自己写一个 << 重载,让 cout << 对象 成为可能:

class Person {
public:string name;int age;
};
​
// 重载 <<
ostream& operator<<(ostream& os, const Person& p) {os << "Name: " << p.name << ", Age: " << p.age;return os;
}

这样你就能这样写:

Person p{"麦兜", 20};
cout << p << endl;

ok,这个知识点实际上涉及到了运算符重载函数的编写;我先说一个结论:

operator<<必须写成全局函数(或友元函数),为什么呢?

因为 cout << p 是这样调用的:operator<<(cout, p); // ostream 是左边,Person 是右边

如果你写成:

class Person { ostream& operator<<(ostream& os); // 错误!只能是 p << cout 
};

这就变成了 p << cout,方向颠倒了,所以没法实现 cout << p 的语法。

故哪些运算符建议写成成员函数?哪些建议全局?

运算符类型推荐形式说明
=, [], (), ->成员函数这些操作符需要访问类的内部状态或作用于“左侧对象本身”
<<, >>, +, -, ==, !=全局函数或友元函数左侧不是类对象(如 cout << obj),或需要双操作数对称性

cout的使用技巧

  1. 运算符优先级陷阱 (如我们上面的问题)

  2. 输出 bool 值时注意格式

cout << true << endl;      // 输出: 1
cout << boolalpha << true << endl;  // 输出: true ✅

   3.输出字符和整数要区

    char ch = 'A';
    int x = 65;
    cout << ch << endl;     // 输出: A
    cout << static_cast<int>(ch) << endl;  // 输出: 65

    4.其他格式化技巧:

    我们需要加上 头文件: #include <iomanip>

    1) 设置小数精度 ;如上

    2) 宽度对齐 & 填充字符

    cout << setw(10) << 42 << endl;         // 宽度为10,默认右对齐
    cout << setfill('*') << setw(10) << 42 << endl;  // 输出:********42

    3)左右对齐

    cout << left << setw(10) << 42 << endl;   // 左对齐
    cout << right << setw(10) << 42 << endl;  // 右对齐

    4) 输出十六进制/八进制

    cout << hex << 255 << endl;  // ff
    cout << oct << 255 << endl;  // 377
    cout << dec << 255 << endl;  // 255 (恢复十进制)

    显示符号位(正数也带 + )

    cout << showpos << 123 << endl;  // +123

    再次理解

    运算符重载是指可以自定义某个类使用某个运算符的逻辑,譬如+,-,*等等。

    而<<这个运算符也是可以被重载的;例如ostream类就是重载了这个运算符 。

    cout是ostream的一个对象,它使用<<能够将数据写入这个缓冲区。

    实际上cout<<10是operator<<(cout, 10);的语法糖。即他本质上是调用了operator<<,并把要打印的东西(整数,浮点数,字符,字符串)作为参数。

    而这个运算符重载函数返回的是ostream&,即引用类型,则他可以实现链式调用;


    文章转载自:

    http://YYP3w6XM.fjscr.cn
    http://sUIf43ts.fjscr.cn
    http://FSZtd3Aw.fjscr.cn
    http://0KP4zlqH.fjscr.cn
    http://CUp0jm34.fjscr.cn
    http://ApBdGD29.fjscr.cn
    http://MG0LvEl0.fjscr.cn
    http://FpcBQJ2q.fjscr.cn
    http://FUXRFA7b.fjscr.cn
    http://y17BI4eV.fjscr.cn
    http://VVcxD6nA.fjscr.cn
    http://ugCZWc0R.fjscr.cn
    http://hgQQZnpz.fjscr.cn
    http://nILVqezh.fjscr.cn
    http://sQ8flXpq.fjscr.cn
    http://5vBExd4t.fjscr.cn
    http://dwrlOF1k.fjscr.cn
    http://CaEaoykt.fjscr.cn
    http://k2tcwGEF.fjscr.cn
    http://yxmxSFmv.fjscr.cn
    http://TW9Sb9U6.fjscr.cn
    http://r06a5ixe.fjscr.cn
    http://BRPQTGnz.fjscr.cn
    http://Yg6lmy7u.fjscr.cn
    http://VGYWv0Rk.fjscr.cn
    http://1A1deBPM.fjscr.cn
    http://ug8Ayubi.fjscr.cn
    http://H7lvMdaT.fjscr.cn
    http://DiekfXPH.fjscr.cn
    http://1lrHjSMR.fjscr.cn
    http://www.dtcms.com/wzjs/647044.html

    相关文章:

  1. 太原专门做网站物理网络设计
  2. jsp网站开发四库全书公司门户网站模板
  3. 网站方案建立网站后期需要干嘛
  4. html5网站地址如何制作自己的网页链接
  5. 迁移wordpress网站建设优化推广安徽
  6. 海安网站优化胶州网站建设哪家好
  7. 天长做网站的广州有做网站的公司吗
  8. 外国 网站模板单页面组合网站
  9. 网站建设实施进度与资源管理html个人网站怎么做
  10. 网站建设的一般过程包括哪些网站建设基础及流程
  11. 成都购物网站建设网站营销策略有哪些
  12. 手机网站建设网网络推广公司盈利模式
  13. 佛山网站专家网站建设费记入科目
  14. 甘肃省建设厅查行网站菏泽做网站的公司
  15. 自己做的网站怎么赚钱phpcms 图片网站
  16. 做网站比较好备案网站忘记密码
  17. 企业建站用什么系统佛山外贸网站建设
  18. 四川高速公路建设开发集团有限公司网站wordpress能静态吗
  19. 如何给网站做提升支付平台网站建设
  20. 可以建网站的路由器最简单的企业网站
  21. 网站开发面试问题以及回答电子商务网站建设题库
  22. 如何让公司网站wordpress全站采集
  23. 化学产品在哪个网站做推广最好石家庄网站排名软件
  24. 免费创建个人商城网站南阳做网站公司
  25. 成都哪家公司做网站好建设好一个网站需要
  26. 怎样在赶集微网站做微招聘全国企业信息系统网官网
  27. 朋友让你做网站如何拒绝莱芜都市网征婚
  28. 网站建设样板怎么做网站推广知乎
  29. 哪个网站上做ppt比较好看网站建设注册名有规范吗
  30. 企业网站建设的思路博客一号WordPress