首页 > 编程语言 >编程冷知识

编程冷知识

时间:2023-11-08 20:44:54浏览次数:32  
标签:std ... 知识 args 编程 参数 ostream os

编程冷知识

  1. qt中只修改宏,不修改其它东西,编译运行还会时原先的结果,必须手动强制重新编译。

  2. c++中ostream删除了拷贝构造和复制构造,是为了避免两个ostream同时向一个输出流输出数据。如果想使用std::cout将内容输出到终端,可以写成ostream& os = std::cout;如果想将信息记录到文件中,可以轻而易举的改写。

    void LogInfo(ostream& os){}
    
    template <typename T, typename... Args>
    void LogInfo(ostream& os,T&& t,Args&&... args)
    {
    	os << std::forward<T>(t)<<" ";
    	LogInfo(os, args...);
    }
    
    template <typename... Args>
    void LogInfo(Args&&... args)
    {
        //ostream& os = std::cout; 	// 将输出流输出到标准输出。
    	ofstream file("MMMMMMMZY.txt");
    	ostream& os= file;
        // LogInfo(os,args...);	// 
    	LogInfo(os,std::forward<Args>(args)...);
    }
    
  3. 参数包展开的区别

    • args...
      • 参数包中的参数会按照原样展开,没有进行任何类型转换。这种展开方式适用于不需要对参数进行类型转换的情况。
    • std::forward(args)...
      • std::forward是一个模板函数,它根据参数的类型推导出适当的左值引用或右值引用,如果参数是左值,它们将被转换为左值引用;如果参数是右值,它们将被转换为右值引用。这样保持参数的值类别和常量性。

    用args...进行参数包展开时,按照原始类型进行传递,不进行值类别和常量性的转换。而std::forward会根据参数的左值/右值属性进行类型转换。

  4. #define LOG_INFO(...) LogInfo("file: ",FILE,", function: ", FUNCTION, ", line: ",LINE,##VA_ARGS)

    ... 表示可变参数的占位符。## 运算符用于处理可变参数为空的情况,它的作用是在可变参数为空时将前面的逗号去除。__VA_ARGS__ 是可变参数的使用方式,它允许宏接受不定数量的参数。

标签:std,...,知识,args,编程,参数,ostream,os
From: https://www.cnblogs.com/ziyuemeng/p/17818237.html

相关文章

  • 现代密码学 - 知识点汇总
    第一章1、信息安全所受到的威胁:人为威胁和自然威胁2、人为攻击:主动攻击(中断、篡改、伪造),被动攻击被动攻击因不对消息做任何修改,因而是难以预测的,对弈对抗这种攻击重点在于预防而非检测。绝对防止主动攻击是十分困难的,因此抗击主动攻击的主要途径是检测。3、安全业务:......
  • Dart 基础知识笔记
    本文主要介绍Dart基础知识笔记。tourmain()函数是Dart程序的入口main()函数返回void并具有可选的List<String>参数作为参数所有对象都从Object类继承Dart是强类型当您想明确地不希望有任何类型时,使用特殊类型dynamicDart可以在函数内创建函数(嵌套函数或局部函数),可......
  • 牛客[编程题] HJ25 数据分类处理
     描述信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。  数据范围:1\leI,R\le100\1≤I,R≤100  ,输入的整数大小满足 0\lev......
  • 职场小白必备知识点-ARP协议
    ARP协议介绍ARP-地址解析协议,可以利用ip地址找到网卡的物理地址。相反也可以通过MAC(网卡物理地址名称)找到IP地地址。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物......
  • 牛客[编程题]坐标移动
     https://www.nowcoder.com/questionTerminal/119bcca3befb405fbe58abe9c532eb29publicclassProgram{publicstaticvoidMain(){stringline;while((line=System.Console.ReadLine())!=null){//注意while处理多个casestr......
  • 2008计算机软件基础 - 编程题 - 参考源程序
    2008计算机软件基础-编程题-参考源程序注:此程序仅供参考,不是唯一的标准答案,若有异议,请提出来 1typedefstructshangpin2{3intno;4charname[100];5intcount;6intprice;7}SP;89voidinsert(SPg[],int*length,SPx)10{11......
  • shell编程-流程控制
    拓展basename&dirnamebasename命令basename是去除目录后剩下的名字,取文件名例: [root@linux-server~]#temp=/home/temp/1.test[root@linux-server~]#base=`basename$temp`[root@linux-server~]#echo$base1.testdirname是获取目录名 例:[root@linux-server......
  • 51单片机定时器和中断知识
    什么是定时器/计数器?---既可以定时,也能计数的一种单片机内部资源,主要用于软件计时和软件延时等场合。但同一时刻只能使用其中一种功能。定时器的核心功能简单一句话说就是“启动定时器后,每个机器周期到来,初值寄存器自动加1,直到计满溢出”。定时器的工作流程:1.启动信号2.预设机器......
  • 30张图详解IP地址网络知识
    你们好,我的网工朋友。IP地址是所有网络初级课程里最先涉及到的技术点,对于IP地址的合理规划是网络设计的重要环节,必须拿捏。IP地址规划的好坏,影响到网络路由协议算法的效率,影响到网络的性能,影响到网络的扩展,影响到网络的管理,也必将直接影响到网络应用的进一步发展。今天和你分享一篇......
  • WPF中的Binding的常见知识点与技巧
    在XAML中,可以绑定到许多不同类型的数据源和属性。以下是一些可以绑定的常见数据源和属性:属性:可以绑定到对象的属性,例如控件的Text、Visibility、IsEnabled等属性。集合:可以绑定到集合数据,如List、ObservableCollection、Array等。在绑定到集合时,还可以使用索引器绑定到特定项。静态......