65,209
社区成员
发帖
与我相关
我的任务
分享char buf[200]中,读取成功之后他直接做了下面这行Value=buf,这里的value是variant类型,然后在外面有把这个value直接赋值给了一个int,这样做是否是可以的?我调试了部分代码,取得的结果是对的。 const COleVariant& operator=(const LPCTSTR lpszSrc);
理解和讨论之前请先学会如何观察!
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
对学习编程者的忠告:
多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他!
)
单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
864: class COleVariant : public tagVARIANT
865: {
866: // Constructors
867: public:
868: COleVariant();
869:
870: COleVariant(const VARIANT& varSrc);
871: COleVariant(LPCVARIANT pSrc);
872: COleVariant(const COleVariant& varSrc);
873:
874: COleVariant(LPCTSTR lpszSrc);
875: COleVariant(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set to ANSI string
876: COleVariant(CString& strSrc);
877:
878: COleVariant(BYTE nSrc);
879: COleVariant(short nSrc, VARTYPE vtSrc = VT_I2);
880: COleVariant(long lSrc, VARTYPE vtSrc = VT_I4);
881: COleVariant(const COleCurrency& curSrc);
882:
883: #if (_WIN32_WINNT >= 0x0501) || defined(_ATL_SUPPORT_VT_I8)
884: COleVariant(LONGLONG nSrc);
885: COleVariant(ULONGLONG nSrc);
886: #endif
887:
888: COleVariant(float fltSrc);
889: COleVariant(double dblSrc);
890: COleVariant(const COleDateTime& timeSrc);
891:
892: COleVariant(const CByteArray& arrSrc);
893: COleVariant(const CLongBinary& lbSrc);
894:
895: COleVariant(LPCITEMIDLIST pidl);
896:
897: // Operations
898: public:
899: void Clear();
900: void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);
901: void Attach(VARIANT& varSrc);
902: VARIANT Detach();
903: void GetByteArrayFromVariantArray(CByteArray& bytes);
904:
905: BOOL operator==(const VARIANT& varSrc) const;
906: BOOL operator==(LPCVARIANT pSrc) const;
907:
908: const COleVariant& operator=(const VARIANT& varSrc);
909: const COleVariant& operator=(LPCVARIANT pSrc);
910: const COleVariant& operator=(const COleVariant& varSrc);
911:
912: const COleVariant& operator=(const LPCTSTR lpszSrc);
913: const COleVariant& operator=(const CString& strSrc);
914:
915: const COleVariant& operator=(BYTE nSrc);
916: const COleVariant& operator=(short nSrc);
917: const COleVariant& operator=(long lSrc);
918: const COleVariant& operator=(const COleCurrency& curSrc);
919:
920: #if (_WIN32_WINNT >= 0x0501) || defined(_ATL_SUPPORT_VT_I8)
921: const COleVariant& operator=(LONGLONG nSrc);
922: const COleVariant& operator=(ULONGLONG nSrc);
923: #endif
924:
925: const COleVariant& operator=(float fltSrc);
926: const COleVariant& operator=(double dblSrc);
927: const COleVariant& operator=(const COleDateTime& dateSrc);
928:
929: const COleVariant& operator=(const CByteArray& arrSrc);
930: const COleVariant& operator=(const CLongBinary& lbSrc);
931:
932: void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set ANSI string
933:
934: operator LPVARIANT();
935: operator LPCVARIANT() const;
936:
937: // Implementation
938: public:
939: ~COleVariant();
940: };