当前位置:  开发笔记 > 编程语言 > 正文

*static*成员函数的const和非const版本

如何解决《*static*成员函数的const和非const版本》经验,为你挑选了0个好方法。

我有两个版本的相同的静态成员函数:一个采用指向const的指针参数,并采用指向非const的参数.我想避免代码重复.
在阅读了一些堆栈溢出问题(这些都是关于非静态成员函数的)之后我想出了这个:

class C {
private:
  static const type* func(const type* x) {
    //long code
  }

  static type* func(type* x) {
      return const_cast(func(static_cast(x)));
  }
public:
  //some code that uses these functions
};

(我知道玩指针通常是一个坏主意,但我正在实现一个数据结构.)

我在libstdc ++中发现了一些如下所示的代码:
注意:这些代码不是成员函数

static type* local_func(type* x)
{
  //long code
}

type* func(type* x)
{
  return local_func(x);
}

const type* func(const type* x)
{
  return local_func(const_cast(x));
}

在第一种方法中,代码在一个带有指针到const参数的函数中.
在第二种方法中,代码在一个函数中,该函数接受指向非const的参数.
通常应该使用哪种方法?两个都正确吗?

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有