摘要:
首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理。一、printf函数的实现原理在C/C++中,对函数参数的扫描是从后向前的。C/C++的函数参数是通过压入堆栈的方式来给函数传参数的(堆栈是一种先进后出的数据结构),最先压入的参数最后出来,在计算机的内存中,数据有2块,一块是堆,一块是栈(函数参数及局部变量在这里),而栈是从内存的高地址向低地址生长的,控制生长的就是堆栈指针了,最先压入的参数是在最上面,就是说在所有参数的最后面,最后压入的参数在最下面,结构上看起来是第一个,所以最后压入的参数总是能够被函数找到,因为它就在堆栈指针的上方。print 阅读全文
摘要:
方法一:需要你手动给工程做如下设置:右键工程属性-》配置属性-》链接器-》系统-》子系统 选择下拉的第一个控制台方法二:ctrl+f5进行运行调试第一种我的没有效果,可能第一种说的是vs2010,我的vs2008 阅读全文
摘要:
代码之下,了无疑问#include <Windows.h>#include <iostream>using namespace std;class fuck{private: RECT m_rc; static const RECT m_emptyRc;public: fuck(RECT rc = m_emptyRc){m_rc=rc;cout<<m_rc.left<<":"<<m_rc.top<<":"<<m_rc.right<<":"& 阅读全文
摘要:
explicit用来防止由构造函数定义的隐式转换。要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。例如:class things{ public: things(const std::string &name = ""): m_name(name),height(0),weight(10){} int CompareTo(const things & other); std::string m_name; int height; in... 阅读全文