创建已开发类的多个对象(例如 a 和 b)。该类是一个向量(一维数组)。为此类的对象实现操作的重载
() (a(i)=b(j))。
class vector {
public:
int ar[10];
int &operator ()(int i)
{
if(i >= 0 && i < 10)
return ar[i];
else
cout << "Выход за пределы массива" << endl;
}
};
int main()
{
vector obj1, obj2;
int a = 1, b = 11;
for(int i = 0; i <= 9; i++) {
obj1(i) = a++;
obj2(i) = b++;
}
int tmp;
for(int i = 0; i <= 9; i++) {
tmp = obj1(i);
obj1(i) = obj2(i);
obj2(i) = tmp;
}
return 0;
}
不,不对。C++ 要求所有非
void函数执行路径都以显式的return. 否则,行为是 undefined。您对运算符的实现并不()包含return在所有执行路径中。也就是说,您的程序的行为是未定义的。未定义行为的一种可能表现是编译器无法编译您的程序。优秀的现代 C++ 编译器会做到这一点,指出并非此函数中的所有执行路径都返回一个值。