我正在为数组创建一个类以用作堆栈,并遇到两种类型的函数来返回顶部元素。我无法理解两者之间的区别以及编译器如何决定调用两者中的哪一个。下面是两者的代码。
T & getTop() { //function 1
return arr[top - 1];
}
const T & getTop() const { //function 2
return arr[top - 1];
“top”变量指向数组中当前的空单元格,T 是通用数据类型。
感谢您提前提供的帮助。
我想你的堆栈叫做
stack
。
stack<T> s;
/*do something with it*/
s.getTop(); //will call the non const version
std::as_const(s).getTop() //will call const version
同样:
const stack<T> s;
s.getTop() //const version
所以,如果变量的类型不是 const,它将调用非 const 版本。否则它将调用 const 版本。
您可以看到这个answer以供参考,但简单来说,对于这种特定情况,看起来是为了告诉其他方法不会改变对象的逻辑状态。