由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教C++问题
相关主题
没有经过构造函数???这个C++程序为什么不能运行
C++ online Test 又一题 (转载)a question on C++ string
问行C++代码A aimple C++ question
template 类的继承问题请问C++中局部未使用的变量在优化的时候会去掉么?
我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。C++ 初级再初级问题
const 指针类型转换A helloworld OpenMP question?
Use Visual .NET for C++ programming大侠们救命, C++ operator new 问题
三个C syntax 弱问题还是咱们这儿,亲。
相关话题的讨论汇总
话题: base话题: derived话题: public话题: c++话题: int
进入Programming版参与讨论
1 (共1页)
m**********8
发帖数: 103
1
class base{
~base();
};
class derived: public base{
};
int main(int argc, char **argv)
{
derived *d = new derived;
}
为什么给base手动加上一个public的default ctor之后编译会出错,说base::~base()
is private? thanks!
X****r
发帖数: 3557
2
你加的~base()明明是private的啊,你为什么说它是public的呢?

【在 m**********8 的大作中提到】
: class base{
: ~base();
: };
: class derived: public base{
: };
: int main(int argc, char **argv)
: {
: derived *d = new derived;
: }
: 为什么给base手动加上一个public的default ctor之后编译会出错,说base::~base()

m**********8
发帖数: 103
3
不是,我的问题是,上面的程序可以通过编译,但为什么手动加上个base::base()就通
不过了呢?

【在 X****r 的大作中提到】
: 你加的~base()明明是private的啊,你为什么说它是public的呢?
X****r
发帖数: 3557
4
哦,我知道你的意思了。你手动加上base::base()的话,base的constructor就不是
implicitly declared的了,以至于derived::derived()虽然是implicitly
declared(而且是implicitly defined),但是non-trivial的了,因为
base::base()现在是non-trivial的。
以下是我的推测:对于non-trivial的derived::derived(),它必须能够access
base::~base()。因为当出现exception的时候,如果derived里的base这个子对象
已经被构建了的话,将会被析构(stack unwinding),所以需要调用base::~base()。

【在 m**********8 的大作中提到】
: 不是,我的问题是,上面的程序可以通过编译,但为什么手动加上个base::base()就通
: 不过了呢?

m**********8
发帖数: 103
5
茅塞顿开。谢谢!

【在 X****r 的大作中提到】
: 哦,我知道你的意思了。你手动加上base::base()的话,base的constructor就不是
: implicitly declared的了,以至于derived::derived()虽然是implicitly
: declared(而且是implicitly defined),但是non-trivial的了,因为
: base::base()现在是non-trivial的。
: 以下是我的推测:对于non-trivial的derived::derived(),它必须能够access
: base::~base()。因为当出现exception的时候,如果derived里的base这个子对象
: 已经被构建了的话,将会被析构(stack unwinding),所以需要调用base::~base()。

1 (共1页)
进入Programming版参与讨论
相关主题
还是咱们这儿,亲。我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
电话面试题一问 (转载)const 指针类型转换
c++ questionUse Visual .NET for C++ programming
问个copy constructor的问题三个C syntax 弱问题
没有经过构造函数???这个C++程序为什么不能运行
C++ online Test 又一题 (转载)a question on C++ string
问行C++代码A aimple C++ question
template 类的继承问题请问C++中局部未使用的变量在优化的时候会去掉么?
相关话题的讨论汇总
话题: base话题: derived话题: public话题: c++话题: int