沉默流星 发表于 2024-12-2 16:22:04

对象和对象参与计算这种如何封装



static/image/hrline/1.gif
在C++当中可以重载操作符,让对象之间进行计算,说白了就是计算的对象底层的成员属性。
#pragma once
class Integer {
public:
    int value;

public:
    // 构造函数
    Integer() {};
    Integer(int v)
    {
      value = v;
    }

    Integer operator+(const Integer& other) const;


};#include "重载操作符.h"




Integer Integer::operator+(const Integer& other) const
{
    return Integer(this->value + other.value);
}


static/image/hrline/1.gif




hcwanz 发表于 2024-12-2 16:44:51

本帖最后由 hcwanz 于 2024-12-2 16:51 编辑

c=a.加(b)

或者把演示整数类封为本地基本数据类型, 方法就参考文本型, 弄成c语言风格

沉默流星 发表于 2024-12-2 16:55:44

本帖最后由 沉默流星 于 2024-12-2 16:57 编辑

hcwanz 发表于 2024-12-2 16:44
c=a.加(b)

或者把演示整数类封为本地基本数据类型, 方法就参考文本型, 弄成c语言风格 ...
整成 本地整数基本类型,的确可以,但要是实现的成员属性是小数类型的呢,封装成这样小数计算能否保证精度问题。

hcwanz 发表于 2024-12-2 17:04:52

本帖最后由 hcwanz 于 2024-12-2 17:10 编辑

我只能给出一个理论上的方法

通过在c++层面定义隐式转换函数, 可以让下图保留精度.
应该没法更简单了.


最好还是别想着玩花的了, 老老实实封成普通的方法吧

创世魂 发表于 2024-12-2 17:39:52

沉默流星 发表于 2024-12-2 16:55
整成 本地整数基本类型,的确可以,但要是实现的成员属性是小数类型的呢,封装成这样小数计算能否保证精度 ...
只有 本地基本数据类型 可以进行运算,其它的都不行。火山不支持重载操作符的。

hcwanz 发表于 2024-12-2 18:32:35

本帖最后由 hcwanz 于 2024-12-2 18:33 编辑

创世魂 发表于 2024-12-2 17:39
只有 本地基本数据类型 可以进行运算,其它的都不行。火山不支持重载操作符的。
...
难说:噜阿噜
至少类似`文本型`的类, 是可以实现了


页: [1]
查看完整版本: 对象和对象参与计算这种如何封装