【问题标题】:How do i make a class as such that it could be assigned a value using an equal sign [closed]我如何创建一个类,以便可以使用等号为它分配一个值[关闭]
【发布时间】:2012-04-08 02:07:08
【问题描述】:

首先我为什么要尝试这样做...嗯,我正在尝试学习编程并认为理解这一步将进一步帮助我。所以请帮忙。 可以在多种语言中使用 int...

int x;

x=2;

那么我该怎么做:

abc x;

x=2;

填写这个

类 abc{

//“我在这里做什么才能使从它创建的任何对象能够以这种方式分配值……不像 abc(2);我可以这样做。”

}

解决方案:

// Example program
#include <iostream>
#include <string>

class ABC {
    private:
        int x;
    
    public:
        
        int getX() const  {
            return this->x;
        }
        
        ABC(int y) {
         this->x = y;
        }
    

        friend std::ostream& operator <<(std::ostream& outputStream, const ABC& p);
        
    
        ABC operator=(const int &b) {
            this->x = b;
            return this->x;
        }
};

std::ostream& operator <<(std::ostream& outputStream, const ABC& p){
    outputStream << p.getX();
    return outputStream;
}
        

int main() {
    ABC s = 1;
    std::cout << s << "\n";

    s = 4;
    std::cout << s << "\n";

    return 0;
}

【问题讨论】:

  • 你必须在这里选择一种语言。
  • 这不适用于所有语言。 C++?
  • 选择任何你想要的语言...C++ 或 javascript 怎么样
  • 我知道它可能与构造函数等有关。
  • 我认为您是在询问将值传递给函数。您可以使用多种语言来做到这一点,例如 Java、Python 或 Ruby。我建议选择一种语言,然后澄清您的问题。

标签: class object equals assign


【解决方案1】:

至少在 C++ 中,它隐含在单参数构造函数中。在 JavaScript 中,这是不可能的。 C++:

class SomeClass {
public:
    int x;

    SomeClass(int x) {
        this->x = x;
    }
};

int main(int argc, char *argv[]) {
    SomeClass s = 5;

    cout << s.x << "\n"; // 5

    s = 17;

    cout << s.x << "\n"; // 17

    return 0;
}

Here's a demo.

【讨论】:

  • 谢谢我看到你做了什么...不是我想要的,但仍然是一样的哈哈。
【解决方案2】:

对象并不是这样工作的。一个 int 可以分配给 7,因为一个 int 是一个原始类型,而 7 是一个原始类型。一个对象是不同的。一个对象只能分配给相同类型的对象。 7 不是一个对象。它只是一个数字。

对象是实例变量和方法的集合。这可以防止您将其分配给原始类型,例如 int,它只是位的集合。唯一可以为对象分配的东西是相同类型的对象,或者转换为该类型的对象。

【讨论】:

  • 发布了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
  • 2013-07-25
  • 2021-06-23
  • 1970-01-01
  • 2019-11-01
  • 2018-12-05
  • 1970-01-01
相关资源
最近更新 更多