gpt4 book ai didi

c++ - 抽象类的复制构造函数中的问题

转载 作者:行者123 更新时间:2023-11-30 01:02:31 27 4
gpt4 key购买 nike

如何在派生类的抽象类的复制构造函数中插入值

如果我删除虚函数并创建 Base 类的对象,或者如果我更改复制构造函数但我只能访问 Derived 类,则该程序运行良好。

class Book{
protected:
string title;
string author;
public:
Book(string t,string a){
title=t;
author=a;
}
virtual void display()=0;
};

class MyBook: private Book
{
public:
int price;

MyBook(string t,string a,int p)
{
Book(t,a);
price = p;
}

void display()
{
....
}
};
int main() {

string title,author;
int price;
getline(cin,title);
getline(cin,author);
cin>>price;
MyBook novel(title,author,price);
novel.display();
return 0;
}

最佳答案

这是您要找的吗?

class MyBook: private Book
{
public:
int price;

MyBook(string t, string a, int p) : Book(std::move(t), std::move(a)) {
price = p;
}

void display() override {

}
};

顺便说一句,我不认为你在寻找复制构造函数。我认为您正在寻找一个显式构造函数。 Book 的复制构造函数是 Book(const Book& another)

如果您使用的是 C++ 11 或更高版本,我还有一些建议。

  1. 使用 std::move 避免不必要的字符串 t 复制。
  2. 使用override 关键字,因为当您与基类的方法签名不完全匹配时,它会帮助您生成编译器错误。它可以帮助您避免这种性质的错误。

关于c++ - 抽象类的复制构造函数中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55876643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com