【问题标题】:How to return a value by class name itself in C++?如何在 C++ 中按类名本身返回值?
【发布时间】:2016-02-17 19:05:31
【问题描述】:

我正在为 C++ 中的char[] 开发一个包装类。类似于String。现在我想从对象名称中获取一个值。例如:

void main() {
    String str;
    str = "Hello";
    cout << str;
}

所以str 返回一个character arraycout 可以在屏幕上打印它。我怎样才能在我的课堂上做到这一点? (顺便说一句,我知道已经有一个字符串类。这是Data Structures课的练习)

【问题讨论】:

  • 阅读operator&lt;&lt;超载。
  • @Lasoloz 你的意思是二元左移运算符重载?
  • 是的! STL 类也使用它。
  • @HosseinMaktoobian 您也可以重载强制转换运算符。
  • 一个好的开始:msdn.microsoft.com/en-us/library/1z2f6c2k.aspx。 C++ 参考文档也不错。

标签: c++ class abstract-data-type


【解决方案1】:

这大概就是你的意思:

std::ostream & operator << (std::ostream & os, const String & s)
{
    return os << s.get_char_pointer();
}

当然,您需要将get_char_pointer 更改为适合您的String 的任何内容。

【讨论】:

    【解决方案2】:

    你看错了方向。你不需要str返回一个字符数组(当然它无论如何也不能)。虽然从技术上讲,您可以在 String 类上定义 转换运算符,但不建议这样做,因为它可能会产生意想不到的效果。

    相反,重载 operator&lt;&lt;,将您的类作为第二个参数,并在那里执行流式传输。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多