ramsayleung / comment

0 stars 0 forks source link

Rust模拟C++的函数重载 | 自由庄园 #19

Open utterances-bot opened 2 months ago

utterances-bot commented 2 months ago

Rust模拟C++的函数重载 | 自由庄园

1 函数重载(function overloading) 所谓的函数重载,指的是某些语言支持创建函数名相同,但函数签名不同的多个函数,所谓的函数签名,既指参数类型,也指

https://ramsayleung.github.io/zh/post/2024/rust%E6%A8%A1%E6%8B%9Fc++%E7%9A%84%E5%87%BD%E6%95%B0%E9%87%8D%E8%BD%BD/

ChyuWei commented 2 months ago

更像C++隐式构造

class StringWrapper {
public:
    std::string m_value;
    StringWrapper(const std::string& value) : m_value(value) {}
};

// 函数,接受 StringWrapper 类型的参数
void display(const StringWrapper& strWrapper) {
    std::cout << "Value: " << strWrapper.m_value << std::endl;
}

int main() {
    std::string myString = "Hello, World!";
    // 这里将自动调用 StringWrapper 的构造函数
    display(myString); // 隐式转换为 StringWrapper
    return 0;
}
ramsayleung commented 2 months ago

如果只是从转换的角度来考虑的话,的确更像是隐式构造而非重载。

不过可能是C++ 隐式转换和隐式构造出过太多坑, Rust对"隐式"的东西都不大感冒,转换都要通过明确的 trait 来实现。