代码之家  ›  专栏  ›  技术社区  ›  Ivan Krechetov

Gdiplus::Image::GetWidth()和其他一些getter不应该是“const”吗?

  •  4
  • Ivan Krechetov  · 技术社区  · 17 年前

    我相信这是有缺陷的API设计。还是我遗漏了什么?

    UINT GetWidth();
    UINT GetHeight();
    ...
    

    UINT GetWidth() const;
    UINT GetHeight() const;
    ...
    
    3 回复  |  直到 17 年前
        1
  •  4
  •   Pontus Gagge    17 年前

    有缺陷的API设计?C风格的C++标题?从带我们来的团队那里 CString

    不过,说真的,别指望 GoTW WTL modern C++ ,这导致了一种相当模糊的存在。

        2
  •  2
  •   Community Mohan Dere    9 年前

    const ,并且他们不想增加开销来隐藏。现在我们有 mutable 关键字,但我认为它比这个API年轻。

    或者API的设计者可能是对(有时是令人震惊的大型IMO)C++开发人员的敌对者。 关键词,感觉只会让事情更难使用。我不是Windows历史学家,所以我不能告诉你。:)

        3
  •  1
  •   Andrew Wyatt    17 年前

    严格地说,您可能是对的-变量应该是const。

    http://msdn.microsoft.com/en-us/library/ms533969(VS.85).aspx )。这可能会使代码常量难以更正。。。或者(正如另一个人暗示的那样)微软通常不是非常现代的C++。

    编辑:查看Gdiplus::Image::GetWidth()的代码(在GdiPlusBitmap.h中),MS很容易使用const修饰符实现许多函数。他们已经用Image::GetType()完成了这项工作,其中的代码与Image::GetWidth()、Image::GetHeight()几乎相同。