avatar
问两个问题,C++# Programming - 葵花宝典
v*o
1
一、受保护的析构函数有什么作用?
二,下面的表达式有什么区别?
static_cast(*this) += 5
static_cast(*this) += 5
谢谢大家
avatar
t*d
2
讨论一下,我的理解不知道对不对。

这样不能在栈里生成该类的对象,因为destructor不能正常调用。
只能生成其子类的对象,同样的原因。
operator +=是个函数,第一个参数是pass by reference 还是pass by value

【在 v*********o 的大作中提到】
: 一、受保护的析构函数有什么作用?
: 二,下面的表达式有什么区别?
: static_cast(*this) += 5
: static_cast(*this) += 5
: 谢谢大家

avatar
W*g
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).
avatar
c*x
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).

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。