1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include <iostream>
using
namespace
std;
class
Array{
public
:
Array(
int
size):m_data(
new
int
[size]),m_size(size){}
~Array(
void
){
delete
[] m_data;
m_data = NULL;
}
int
& operator[](
int
i){
//常版本
return
m_data[i];
}
int
& operator[](
int
i)
const
{
//非常版本
return
const_cast
<Array&>(*
this
)[i];
//复用非常版本
}
private
:
int
* m_data;
//一个数组主要包括,数组的首部元素地址和数组的元素个数
int
m_size;
};
int
main(
void
){
Array a(10);
a[0] = 1;
a[1] = 2;
a[2] = 3;
for
(
int
i=0;i<10;++i){
cout << a[i] << endl;
}
//1 2 3 0 0 0 0 0 0 0
//注意:int* p = new int[10];初始化元素都为0
return
0;
}
|
常对象只能调常版本,非常对象既能调非常版本,也能调常版本.
本文转自神ge 51CTO博客,原文链接:http://blog.51cto.com/12218412/1866947