【发布时间】:2010-01-15 09:35:07
【问题描述】:
假设我有一个基类“人”。我从基类“person”公开继承了一个类“student”。我还没有为基类和派生类编写复制构造函数。现在假设我在主程序中编写
main()
{
student sobj1("name", "computer science");
student sobj2=sobj1;
}
现在在第二行中,将调用默认编译器生成的学生的复制构造函数,但在执行之前,将调用基类的默认复制构造函数,这将创建一个匿名对象并对其进行初始化,然后控制权返回到副本学生的构造函数,它初始化对象的学生部分。
这是我们不编写复制构造函数的情况的演示
现在假设我们为这两个类编写了复制构造函数,那么我在编写时已经测试过了
student sobj2=sobj1;
发生的情况是,这一行调用了有效的学生的复制构造函数,但是在这种情况下不会调用基类的复制构造函数(将调用基类的默认构造函数)我的问题是为什么?
【问题讨论】:
-
看起来这是一个 C++ 问题。您的意思是要包含 Java 标记吗?
-
这肯定不是Java,第二行不会实例化任何类。
-
也“公开继承”建议 C++
-
它的 c++ ,很抱歉