请问一个最最简单的赋值有关问题
请教一个最最简单的赋值问题我正在从Java转向C++,很多东西都不了解,看到一段代码,有个问题一直搞不懂。代码
请教一个最最简单的赋值问题
我正在从Java转向C++,很多东西都不了解,看到一段代码,有个问题一直搞不懂。
代码如下:
C/C++ codevoid 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#。