v*********o 发帖数: 5 | 1 一、受保护的析构函数有什么作用?
二,下面的表达式有什么区别?
static_cast(*this) += 5
static_cast(*this) += 5
谢谢大家 |
t****d 发帖数: 8 | 2 讨论一下,我的理解不知道对不对。
这样不能在栈里生成该类的对象,因为destructor不能正常调用。
只能生成其子类的对象,同样的原因。
operator +=是个函数,第一个参数是pass by reference 还是pass by value
【在 v*********o 的大作中提到】 : 一、受保护的析构函数有什么作用? : 二,下面的表达式有什么区别? : static_cast(*this) += 5 : static_cast(*this) += 5 : 谢谢大家
|
W*********g 发帖数: 409 | 3 static_cast(*this) += 5
A temporary object will be created, and "this" object will not be changed.
static_cast(*this) += 5
No temporary object created, and the "RWTime" part of "this" object will
be changed (Provided that operator+= is not virtual). |
c********x 发帖数: 84 | 4
I disagree.
static_cast(*this) += 5
the object itself pointed by *this add 5;
static_cast(*this) += 5
the object allias pointed by *this add 5;
【在 W*********g 的大作中提到】 : static_cast(*this) += 5 : A temporary object will be created, and "this" object will not be changed. : static_cast(*this) += 5 : No temporary object created, and the "RWTime" part of "this" object will : be changed (Provided that operator+= is not virtual).
|