[VC++]CComBSTR数据类型比较

本文探讨了CComBSTR在VC6与VC2005中行为的不同,特别是在!=操作符重载的存在与否导致的比较行为差异。在VC6中由于缺少重载,可能比较的是对象地址而非实际值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// dd.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <atlbase.h>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
	CComBSTR bVal("1.0");
	if(bVal != L"1.0")
		cout<<"no"<<endl;
	else
		cout<<"yes"<<endl;

	return 0;
}

上面是vc++.net2005上的一个win32控制台程序,在程序运行时,进入了else。

但是上面的代码在vc6中,运行的时候却是进入了if。

这是为什么呢?

因为在vc6中对于CComBSTR没有!=的重载,但是在vc2005中却有它的重载。所以猜测在vc6中比较的可能是地址!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值