您的位置:首页 > 房产 > 建筑 > 制作网页时一般需要兼容下列选项中的哪些浏览器_零基础怎么学视频剪辑_给我免费的视频在线观看_软文营销的经典案例

制作网页时一般需要兼容下列选项中的哪些浏览器_零基础怎么学视频剪辑_给我免费的视频在线观看_软文营销的经典案例

2024/12/28 2:05:03 来源:https://blog.csdn.net/2401_83052144/article/details/144519298  浏览:    关键词:制作网页时一般需要兼容下列选项中的哪些浏览器_零基础怎么学视频剪辑_给我免费的视频在线观看_软文营销的经典案例
制作网页时一般需要兼容下列选项中的哪些浏览器_零基础怎么学视频剪辑_给我免费的视频在线观看_软文营销的经典案例

basic_ios及其衍生库(附 GCC libstdc++源代码)

我们由这张图展开我们的讨论

在这里插入图片描述

对于Date对象,只有实现了<<重载到输出流才可以插入到stringstream ss中
现在我有疑问stringstream是怎么做到既能输出又能输入的?
而且为什么stringstream对象能传给ostream对象的引用?
在这里插入图片描述
在这里插入图片描述
我们可以知道ostream是ostringstream的基类,由于父类引用能够接收子类对象,所以只要我们实现了自定义类型的operator<<,无论是ostream对象还是stringstream对象,我们都能够实现自定义类型的输出
在这里插入图片描述

下面我们将对ostream库,streambuf库,ofstream库,filebuf库,ostringstream库以及stringbuf库的源代码进行刨析,相信通过下面的讲解,你一定能够对c++的io有更深入的了解
两大收获:

  1. 理解了为什么cout比printf效率慢(因为printf是对系统调用的直接封装,而cout是更加上层的封装)
  2. 通过c++底层库对c语言struct FILE的封装,了解c++是在提出面向对象之后,对c语言的封装,这点将在filebuf库中提到。
    在这里插入图片描述
    cout本身就比printf效率慢,又因为流同步机制的存在,所以我们需要对std::cout进行优化
    流同步是指 C++ 的标准流(如 std::cout)和 C 的标准流(如 printf)之间的缓冲区同步机制。它的目的是确保在同一个程序中同时使用 C 和 C++ 的输入输出函数时,数据能够按照预期顺序输出,不会发生混乱
    注意:禁用同步后,若混用 std::cout 和 printf,输出顺序可能会出现问题。
#include <iostream>
#include <cstdio>int main() {std::ios::sync_with_stdio(false); // 禁用同步std::cout << "C++ Output";printf("C Output");return 0;
}

输出可能是:
在这里插入图片描述
在这里插入图片描述

libstdc++库

lbstdc++库通常都不会将一个类全部实现在一个文件中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模板实例化分为两种

  1. 隐式实例化(默认行为)(即普通模板实例化,如ostream.tcc)
    如果模板定义在头文件中,并被多个源文件包含,每个源文件都会为需要的类型生成模板实例化代码
    编译阶段:每个编译单元都会实例化模板。
    链接阶段:链接器会去重,最终保留一份实例化代码。
    缺点:编译时间较长,每个编译单元都要实例化同一模板。
  2. 显示模板实例化(如ostream-inst.cc)
    在一个源文件中,显式告诉编译器为某个类型生成模板实例化代码,其他编译单元不再需要实例化该模板类型。避免每个编译单元重复实例化同一模板类型。
    提高编译速度。
    解决模板在不同编译单元中重复实例化的问题。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
源代码网站https://gcc.gnu.org/onlinedocs/libstdc%2B%2B/libstdc%2B%2B-api-4.5/a00902.html

期待下次再见,由于精力受限,只对ostream库及其衍生库做解释,istream和iostream库实现类似

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com