首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个最最简单的赋值有关问题

2012-02-12 
请教一个最最简单的赋值问题我正在从Java转向C++,很多东西都不了解,看到一段代码,有个问题一直搞不懂。代码

请教一个最最简单的赋值问题
我正在从Java转向C++,很多东西都不了解,看到一段代码,有个问题一直搞不懂。
代码如下:

C/C++ code
void CImgTabWnd::SetImageSize(CBitmap* pBitmap, CSize& sz){    BITMAP bm;    pBitmap->GetBitmap(&bm);    [color=#FF0000]sz = CSize(bm.bmWidth,bm.bmHeight);[/color]}


请问这里sz是怎样赋值的呀?没有用new关键字就可以创建出来吗???



[解决办法]
类CSize有一个赋值操作符函数
CSize & operator = (const CSize &)

所以 sz = CSize(bm.bmWidth,bm.bmHeight) 就调用了该函数实现赋值

当sz被声明为指针是才会用到 new 操作 



[解决办法]
sz是调用者传过来的。
[解决办法]
c++的new 被定义为运算符, 功能是得到一个指向内存块的指针
new先申请内存,再返回指针

sz = CSize(...);
这种赋值,实际是利用类的构造函数生成一个临时对象,之后sz利用operator=把该临时对象的值赋给自己
上句完成后,该临时对象生命期限到期

如果是new
sz = *(new CSize());
不过这样就没法delete,C++必须要:
CSize* tmp = new CSize(..);
sz = *tmp;
delete tmp;
[解决办法]
楼主啊,你还是买本《C++ Primer》认真入门吧。你这样太浪费时间了。
另外,既然学java的,不如考虑转C#。

热点排行