栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

实现简单的cout对象

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实现简单的cout对象

前言
  • c++实现好的cout是存在std这个命名空间中,本质上是一个对象,不是一个类型也不是一个方法!
代码
#include
#include
#define BEGINS(x) namespace x {
#define ENDS(x) } // namespace x

BEGINS(haizei)

class ostream {
public:
    ostream& operator<<(int x);
    ostream& operator<<(const char *x);
};

ostream& ostream::operator<<(int x) {
    printf("%d",x);
    return *this;
}

ostream& ostream::operator<<(const char *x) {
    printf("%s",x);
    return *this;
}
ostream cout;

ENDS(haizei)

int main(){
    int n = 123, m = 456;
    std::cout << n << " " << m; std::cout << std::endl;
    haizei::cout << n << " " << m;std::cout << std::endl;
    return 0;
}

  • 此处为什么必须返回对象的引用?
  • 如果没有返回对象的引用,是否可以像std::cout一样不间断输出?
后记
  • c++包含四种编程范式:面向过程、面向对象、泛型编程、函数式编程;
  • 但是,c语言也可以实现这些编程范式,只是利用c语言实现面向过程比用c语言实现其他几种范式容易一些。
  • 请注意是否会有人说,比较绝对的说法:不能实现面向对象!
  • c++中存在auto和decltype的类型推断,它们有什么区别?一般用在什么地方?
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/384384.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号