有个问题不明白!

weixiaohua 2004-03-22 06:03:15
//只是C++Primer题解中的一个例子.
Matrix &Matrix::operator =(const Matrix &rhs)
{
if (this != &rhs)
{
if (rows != rhs.rows || cols != rhs.cols)
{
//Matrix::~Matrix(); //编译无法通过.
Matrix::~Matrix; //这样却可以通过,我有点想不通的是C++不是必须要求有()的吗?
initData(rhs.rows, rhs.cols);
}
initMatrix(rhs.im);
}
return *this;
}
...全文
33 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixiaohua 2004-03-23
  • 打赏
  • 举报
回复
weixiaohua 2004-03-23
  • 打赏
  • 举报
回复
谢谢!
Wolf0403 2004-03-22
  • 打赏
  • 举报
回复
1、析够函数是成员函数,不能通过类名直接调用
2、没有 () 的不是函数调用。 Matrix::~Matrix; 我猜测是提取了它的地址,没有任何实际功能。
3、正确代码:
this->~Matrix();
new(this) Matrix(rhs.rows, rhs.cols); // 如果没有这个构造函数,则
// new(this) Matrix(); initData(rhs.rows, rhs.cols);

另外,这样使用析构函数是有争议的。
lemon520 2004-03-22
  • 打赏
  • 举报
回复
不是吧!
要有()的!
pacman2000 2004-03-22
  • 打赏
  • 举报
回复
析构函数不能直接这样调用的啊。是在对象被释放前自动调用的。
你可以写成个cleanup()函数。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧