如何将C++面向对象编程中的继承复制构造函数改写为一个长尾词的?

2026-04-16 17:144阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计580个文字,预计阅读时间需要3分钟。

如何将C++面向对象编程中的继承复制构造函数改写为一个长尾词的?

假设有一个基类人,我公开地从这个基类人派生出一个子类学生。我还没有为基类和派生类编写复制构造函数。现在,在主程序中,我编写了以下代码:

cppmain(){ student sobj1(name, computer science);}

假设我有一个基类“人”.我公开地从基类“人”继承了一个班级“学生”.我还没有为base和派生类编写复制构造函数.现在假设我在主程序中写道

main() { student sobj1("name", "computer science"); student sobj2=sobj1; }

现在在第二行中,将调用学生的默认编译器生成的复制构造函数但在执行之前将调用基类的默认复制构造函数,它创建一个匿名对象并初始化它然后控制返回到复制构造函数学生初始化学生的对象部分.

这是我们不编写复制构造函数的情况的演示
现在假设我们为这两个类编写了复制构造函数,然后我在编写时测试了它

student sobj2=sobj1;

会发生什么,这行调用学生的复制构造函数,但是在这种情况下不会调用基类的复制构造函数(基类的默认构造函数将被调用)我的问题是为什么?

我相信规则如下:

>基类的构造函数总是应该在派生类的构造函数之前调用.
>您可以通过在初始化列表中显式调用它来选择将调用哪个基类构造函数.
>如果不这样做,则调用默认构造函数.
>当类没有复制构造函数时,编译器会生成一个复制构造函数.它将为类的所有成员调用默认构造函数并复制基类的构造函数,就像您手写的构造函数实际应该的那样.

如何将C++面向对象编程中的继承复制构造函数改写为一个长尾词的?

所以,你去吧.除非你调用基类的复制构造函数,否则将使用默认的BUT编译器足够聪明,可以在它自己生成的复制构造函数中实际调用它.

以防你不知道如何调用它,例如

Student(Student const & p): Person(p) { }

本文共计580个文字,预计阅读时间需要3分钟。

如何将C++面向对象编程中的继承复制构造函数改写为一个长尾词的?

假设有一个基类人,我公开地从这个基类人派生出一个子类学生。我还没有为基类和派生类编写复制构造函数。现在,在主程序中,我编写了以下代码:

cppmain(){ student sobj1(name, computer science);}

假设我有一个基类“人”.我公开地从基类“人”继承了一个班级“学生”.我还没有为base和派生类编写复制构造函数.现在假设我在主程序中写道

main() { student sobj1("name", "computer science"); student sobj2=sobj1; }

现在在第二行中,将调用学生的默认编译器生成的复制构造函数但在执行之前将调用基类的默认复制构造函数,它创建一个匿名对象并初始化它然后控制返回到复制构造函数学生初始化学生的对象部分.

这是我们不编写复制构造函数的情况的演示
现在假设我们为这两个类编写了复制构造函数,然后我在编写时测试了它

student sobj2=sobj1;

会发生什么,这行调用学生的复制构造函数,但是在这种情况下不会调用基类的复制构造函数(基类的默认构造函数将被调用)我的问题是为什么?

我相信规则如下:

>基类的构造函数总是应该在派生类的构造函数之前调用.
>您可以通过在初始化列表中显式调用它来选择将调用哪个基类构造函数.
>如果不这样做,则调用默认构造函数.
>当类没有复制构造函数时,编译器会生成一个复制构造函数.它将为类的所有成员调用默认构造函数并复制基类的构造函数,就像您手写的构造函数实际应该的那样.

如何将C++面向对象编程中的继承复制构造函数改写为一个长尾词的?

所以,你去吧.除非你调用基类的复制构造函数,否则将使用默认的BUT编译器足够聪明,可以在它自己生成的复制构造函数中实际调用它.

以防你不知道如何调用它,例如

Student(Student const & p): Person(p) { }