返回信息流头文件array.h
#ifndef ARRAY_H
#define ARRAY_H
#include<iostream>
using namespace std;
class array{
friend ostream& operator<<(ostream&,const array&);
friend istream& operator>>(istream&,array&);
public:
array(int=0);
array(const array&);
~array();
int getsize()const;
const array& operator=(const array&);
bool operator==(const array&)const;
bool operator!=(const array &right)const
{
return !(*this==right);
}
int &operator[](int);
const int &operator[](int)const;
private:
int size;
int*ptr;
};
#endif
成员定义array.cpp
#include<iostream>
using namespace std;
#include<iomanip>
using namespace std;
#include<new>
#include<cstdlib>
#include"array.h"
array::array(int arraysize)
{
size=(arraysize>0?arraysize:10);
ptr= new int[size];
for(int i=0;i<size;i++)
ptr[i]=0;
}
array::array(const array& arraytocopy)
:size(arraytocopy.size)
{
ptr=new int[size];
for(int i=0;i<size;i++)
ptr[i]=arraytocopy.ptr[i];
}
array::~array()
{
delete []ptr;
}
int array::getsize() const
{
return size;
}
const array& array::operator=(const array &right)
{
if(&right!=this){
if(size!=right.size){
delete []ptr;
size=right.size;
ptr=new int[size];
}
for(int i=0;i<size;i++)
ptr[i]=right.ptr[i];
}
return *this;
}
bool array::operator==(const array &right)const
{
if(size!=right.size)
return false;
for(int i=0;i<size;i++)
if(ptr[i]!=right.ptr[i])
return false;
return true;
}
int &array::operator[](int subscript)
{
if(subscript<0||subscript>=size)
{
cout<<"\nerror:subscript"<<subscript
<<"out of rang" <<endl;
exit(1);
}
return ptr[subscript];
}
const int &array::operator[](int subscript)const
{
if(subscript<0||subscript>=size)
{
cout<<"\nerror:subscript"<<subscript
<<"out of rang" <<endl;
exit(1);
}
return ptr[subscript];
}
istream& operator>>(istream &input,array &a)
{
for(int i=0;i<a.size;i++)
input>>a.ptr[i];//友元函数居然不能访问PRIVATE 成员
return input;
}
ostream& operator<<(ostream &output,const array &a)
{
int i;
for(i=0;i<a.size;i++)
{
output<<setw(12)<<a.ptr[i];];//友元函数居然不能访问PRIVATE 成员
if((i+1)%4==0)
output<<endl;
}
if(i%4!=0)
output<<endl;
return output;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #32527同步于 2009/12/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[求助]一个关于友元函数不能访问私有成员的问题
a634332123
2009/12/2镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。