gpt4 book ai didi

C++类继承和赋值运算符

转载 作者:行者123 更新时间:2023-12-01 14:45:57 24 4
gpt4 key购买 nike

我来这里是为了问一些我自己无法弄清楚的事情。我一直在编写一个存储 32 位数组的小类,可以执行简单的数学运算,如 +、-、/和 *。

假设我有一个类:

class Binary_Class
{
char bin[32]; // 32 bits array to hold an unsigned binary number
void set_dec(int value){}; // setting the bin[32] value based on input value

// I have operator + and = to perform on objects of this class.
Binary_Class& operator= (const Binary_Class&);
const Binary_Class operator+ (const Binary_Class&);
}

到目前为止,如果我声明 3 个对象,没有问题 a , b , c类(class) Binary_Class ,然后 set_decab ,声明 c=a+b可以使用(?)

但是,我想通过使用新类来扩展类二进制文件
class Binary_Class_Extended: public Binary_Class
{
// weird functions
}

如果我声明 3 个对象 a , b , c类(class) Binary_Class_Extended , 我还能用 c=a+b和之前一样吗?

在 Netbean 中,它说没有 operator= 匹配我的 c=a+b如果都是 Binary_Class_Extended ,
但如果我声明 cBinary_Class该声明有效。这意味着 a+b返回 const Binary_Class好像 operator+不会被带到新类(class)。

我错过了什么还是就是这样?

当然,我可以发布整个代码,因为它只是一个作业,但我认为这些信息现在就足够了。

更新
 class Binary_Class
{
char bin[32]; // 32 bits array to hold an unsigned binary number
void set_dec(int value){}; // setting the bin[32] value based on input value

//i have operator + and = to perform on objects of this class.
Binary_Class& operator= (const Binary_Class&);
const Binary_Class operator+ (const Binary_Class&) const;
}

class Binary_Class_Extended: public Binary_Class
{
// weird functions
}

当我尝试拥有 Binary_Class_Extended 的所有对象时这个错误出现:

main.cpp:285: error: no match for 'operator=' in 'sd = ((Binary_Class*)(&sa))->Binary_Class::operator+(((const Binary_Class&)((const Binary_Class*)((Binary_Class*)(&sb)))))'


Binary_ET_Class sa,sb,sc; sc=sa+sb//初始化 sasb到非空值;

我一直在研究的完整源代码: https://pastebin.com/eiVz0f5p

最佳答案

继承的函数保留了它们的指纹,所以如果 Binary_Class operator+ 被继承,它的返回值将是 ... ?

关于C++类继承和赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17160543/

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