c++运算符=重载问题

来源:百度知道 编辑:UC知道 时间:2024/06/13 15:21:21
class QUEUE
{
int *const queue;
int front, rear;
const int size;
public:virtual QUEUE &operator=(const QUEUE &q);
QUEUE(int size);
virtual ~QUEUE( );
}
等于号的重载,如果q1(5),q2(7),即两个队列的空间大小不一样,我要让q2=q1,则使q2的所有信息都和q1相同,包括空间大小,队列中的各元素

现在问题来了:int *const queue和const int size使这两个成员不能改变,那怎么让q2的空间变成q1那么大呢?具体元素的变化很简单,不用说明

可行的方法可能有const的强制转换,或者别的更好,希望有高手指教
答案正确以程序通过为准
大家要以const为前提啊。。。这是题目,我也没办法,否则就不要高手来帮忙了

我本来准备在函数体内把原来的this所指的队列删掉,重新建立一个队列,但是它的生命周期是不能出这个函数的,有办法吗?

我要的当然是深拷贝,const成员是在初始化之后不能被改变,可以在构造函数初始化列表初始化的
比如QUEUE(int size):size(size),queue(int new【size】){。。。}

int* const queue 指针常量,貌似初始化后就不能改变了,整个题目不通顺啊,意思也牵强,不是题意理解错误吧
比如QUEUE(int size)吧,应该是初始化时使队列具有一定的大小,应该用new吧
你怎么让queue=new(一定的空间),他可是指针常量啊
再有 对象之间的拷贝有深拷贝和浅拷贝,你明显是要浅拷贝了,没有出题的价值,谁出的题这么没水准

看了你的更新后还真学到东西了,题目要const 就是不让你改变他了,就是限定你复制的方法,只复制数据已有的空间循环使用,后面的覆盖前面的,我是这么理解的
你在短信中问我的,是const_cast<标识符>,强制去除const,msdn是这么说的,但我觉得不好使,我用(int *) queue=NULL;编译通过,不知道能不能帮你

没办法直接传递。你可以定义个实际realsize,代替原来的size,当队列元素达到这个数时做队满处理,或者干脆把const size丢掉,用动态数组或链表存储队列.
还有就是不明白为什么一定要定义成const?

int *const queue这样能编译通过吗?你是否是想定义一个常量指针,我没见过这样的定义方法,