我觉得这个例子相当经典:
#include <iostream>
#include <cstdio>
#include <sstream>
#include <cstring>
class InitArray {
enum {sz = 5};
int array[sz];
public:
InitArray() {
memset(array, 0, sizeof(array));
}
int& operator[](int index) {
if(index < 0 || index >= sz) {
printf("out of array!");
exit(1);
}
return array[index];
}
friend std::ostream& operator<<(std::ostream& os,
const InitArray& ia);
friend std::istream& operator>>(std::istream& is,
InitArray& ia);
};
std::ostream& operator<<(std::ostream& os,
const InitArray& ia) {
for(int i = 0; i < ia.sz; i++) {
os << ia.array[i];
if(i != ia.sz - 1)
os << ',';
}
return os;
}
std::istream& operator>>(std::istream& is,
InitArray& ia) {
for(int i = 0; i < ia.sz; i++) {
is >> ia.array[i];
}
return is;
}
int main() {
std::stringstream ss("12 13 14 15 16");
InitArray ia;
ss >> ia;
std::cout << ia << std::endl;
ia[4] = 1000;
std::cout << ia << std::endl;
}
|
在VC6.0当中,如果加上using namespace std;会出现大量莫名其妙的错误,挺郁闷的,是不是换个vs2005来玩玩?
阅读(1390) | 评论(0) | 转发(0) |