关于C++中类对象的构造函数的探讨:

2025-03-10 12:03:43
推荐回答(3个)
回答1:

LPCRECT里面的LP是长指针的意思 这个是以前16位系统遗留下来的 现在可以和CRECT直接cast 简单来说需要LPCRECT的地方 传CRECT的reference是没有任何问题的
后面这个问题比较麻烦 new是不需要使用的 C++构造函数名义上没有返回值 但实际上是有的 只是大多情况下为避免错误发生而忽略了 返回的是该类的对象 也就是*this
没有new的情况下 这个对象是临时的 在语句结束后就会被析构 但有种例外就是作为其他函数参数的时候 会等那个函数运行完毕之后再销毁 也就是这里的dc.Rectangle() 但平时为了避免出错 我觉得自己写方法的时候还是不要这样乱来的好。。。
C++各种特性好麻烦啊。。。

回答2:

这里面LPCRECT与CRECT这个构造函数没有有什么对应关系,只不过可以通过CRECT,LPCRECT两种形式初始化 dc.Rectangle. 对象的构造函数没有返回值,使用new可以初始化指向对象的一个指针,同时利用其构造函数初始化该对象。

回答3:

在这里CRECT是不是继承了LPCRECT了?应该是少了个new