标签: overloading

重载新运算符

是否可以重载new操作符以便不创建对象,而是返回现有对象.

如果可以的话,你怎么能在第一时间创建对象:D

这听起来很奇怪我知道.我试图隐藏客户端的一些细节.我在PS2上制作游戏,我想要有New Foo()语法,但想要一个可以替代使用的预制对象列表.

当新操作符返回指向可用内存的指针时,我不认为会绕过这一点.

new Foo;

struct Foo
{
    void* operator new(std::size_t)
    {
        // return pre made obj.
    }

};
Run Code Online (Sandbox Code Playgroud)

c++ overloading operators

0
推荐指数
1
解决办法
1139
查看次数

JavaScript getElementById函数重载

我的旧网站有问题.它上面的所有JavaScript代码都使用getElemenById函数.但是站点标记的标签没有id属性,而是只有name属性.虽然它仍适用于IE,但浏览器甚至通过name属性返回元素.对于所有其他浏览器,它在JS中是一个错误.我想知道是否有任何方法可以在其他浏览器中重载此功能,使网站与其他浏览器兼容?

javascript overloading

0
推荐指数
1
解决办法
2228
查看次数

C++运算符重载 - 调用函数以获取重载内的值

有没有办法可以在C++中调用运算符重载并在比较期间调用参数的函数?

例如:

class MyClass{
  private:
    int x;
    int y;
  public:
    MyClass(int x, int y);
    int getX();
    int getY();
    bool operator < (const MyClass &other) const {
        return (x < other.getX()); //this does not work!
        // this would work, though, if x was public:
        // return x < other.x;
    }
};
Run Code Online (Sandbox Code Playgroud)

基本上,在我调用other.getX()的地方,如何让它通过一个函数返回自己的x值,以便与本地函数进行比较,而不是让x公共?有没有办法做到这一点?

感谢你的帮助!

c++ overloading function operator-keyword

0
推荐指数
2
解决办法
1496
查看次数

为什么这个函数重载三个整数类型无法编译?

这种为三种大小的整数定义重载函数的尝试失败了.为什么?

byte hack(byte x)
{
   return x+1;
}

unsigned short hack(unsigned short x)
{
   return x+2;
}

unsigned int hack(unsigned int x)
{
   return x+3;
}
Run Code Online (Sandbox Code Playgroud)

编译器告诉我:zzz.cpp:98:错误:重新定义'unsigned int hack(unsigned int)'zzz.cpp:88:错误:'byte hack(byte)'先前在这里定义

c++ overloading compiler-errors

0
推荐指数
1
解决办法
210
查看次数

PHP:我可以在方法重载(__get)中获得数组功能吗?

我想要实现的是当我打电话给$ obj-> CAT [15]; $ obj会检查属性CAT是否存在,如果没有,请立即获取值

public function __get($var){
if($var == "CAT") return $this->cats->get_cat($cat_id);
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是......如何从我的例子中得到数组的值15?将它传递给我的get_cat方法?

php arrays overloading get

0
推荐指数
1
解决办法
151
查看次数

指定cmath的pow函数,而不是本地声明的函数

在调用时ans+= c[i] * pow(x,i);,xCode抱怨"函数调用的争论太多,预期1有2".我有一个本地定义的函数如下:

    Polynomial pow(unsigned int n) const;
Run Code Online (Sandbox Code Playgroud)

和一个构造函数:

    Polynomial(const double t = 0.0);
Run Code Online (Sandbox Code Playgroud)

如何指定我想使用cmath的pow函数而不是本地定义的函数?

谢谢您的帮助!

c++ methods overloading pow

0
推荐指数
1
解决办法
2647
查看次数

我如何在C++中通过引用copy = operator来复制?

我知道这可能是毫无意义的问题,但我只是想知道可以使用=运算符来像这样复制引用

int a, b=5;
a = b;
a = 4;
cout<<b<<endl;
Run Code Online (Sandbox Code Playgroud)

换句话说,我想要做的是使这个代码打印4而不是5.感谢任何评论......

c++ overloading operators

0
推荐指数
1
解决办法
123
查看次数

&运算符在重载方面意味着什么

我正在读一本C++书.该程序试图制作一个对象矢量.这是我不明白的部分

class X {
public:
    X();
    X(int m) {
        temp = x;
    }

    int temp;


    X &operator =(int z) {
        temp = z;
        return *this;
    }

private :
    //            Some functions here
}
Run Code Online (Sandbox Code Playgroud)

上面的线是什么意思?这是某种超载吗?那怎么样?

c++ stl overloading class vector

0
推荐指数
2
解决办法
6190
查看次数

如何避免重复

考虑以下功能

f(int a[])
{
     ///CODE
     for
      for
       if(a[i] > 0)
       //change i on some condition
     for
        //CODE
        if(a[i] > 0)
    ///CODE

}
f(int a[], int th)
{
     ///CODE
     for
      for
        if(a[i] < th)
       //change i on some condition
     for
        //CODE
        if(a[i] < th)
    ///CODE
}
Run Code Online (Sandbox Code Playgroud)

所以我们有f函数和一个优化的巨体,几行是相同的:if(a [i]> 0)我想添加扩展这个函数,这样如果添加一个参数,那些行应该改为if(a [ i] <th)当我重载函数时,数百行重复(变得难以维护),所以我不想要这个.此外,我不能将身体划分为函数,因为"行"出现在太多的内部循环中.

第一个想法:

f(int a[], int th = -1)
{
     ///CODE
        if(th == -1)
            if(a[i] > 0)...
        else
            if(a[i] < th)...
     ///CODE
}
Run Code Online (Sandbox Code Playgroud)

我不能这样做是因为将额外的if引入内循环的性能开销.有没有办法有效和清晰地解决它,也许使用模板或宏?

c++ macros performance templates overloading

0
推荐指数
1
解决办法
179
查看次数

当我插入地图c ++时,为什么不会调用少于运算符?

class Board {
public:

  virtual void init() = 0;
  virtual void print_board() const = 0;
  virtual Board* clone() const = 0;
  virtual bool less_than(const Board& b2) const = 0;
  inline friend bool operator< (const Board& b1, const Board& b2);
};

inline bool operator< (const Board& b1, const Board& b2){
  std::cout<<"TEST1"<<std::endl;
  return b1.less_than(b2);
}
Run Code Online (Sandbox Code Playgroud)

当我使用mymap [board] = evaluate插入时,Test1根本没有被打印; 地图是map<Board*, int>.

c++ overloading map operators

0
推荐指数
1
解决办法
170
查看次数