c++中的一点疑问

lewis_c402 2005-06-02 10:08:14
#include <iostream>

using namespace std;

template<class T>
class Array1D
{
public:
Array1D( int size = 0 );
Array1D( const Array1D<T>& v );
// int Size() { return size; }
private:
int size;
T *element;
};

template<class T> Array1D<T>::Array1D( int sz )
{
if( sz < 0 )
cerr << "error" << endl;
size = sz;
element = new T[sz];
}

template<class T> Array1D<T>::Array1D( const Array1D<T>& v)
{
if( this==&v )
cerr << "error/n";
size = v.size; //这里size是private的 为什么能直接用v.size (编译运行都能成功)
element = new T[size];

}

int main()
{
Array1D<int> a1;
// Array1D<int> &a2 = a1;
// cout << a2.size;
cin.get();

}
...全文
126 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mostideal 2005-06-03
  • 打赏
  • 举报
回复
先顶,明天有时间再看。。。
luo_lei 2005-06-02
  • 打赏
  • 举报
回复
private只是相对于其他类来说的,而对于自身类,的public 成员就当然能访问private数据成员了,而如果想你那样写cout<<al.size的话,就需要对运算符进行重载了.
sunman1982 2005-06-02
  • 打赏
  • 举报
回复
cout << v.size; //那为什么这样用有能正确呢
// 说过了,只有类的友元函数 或者成员函数里面才可以这样勇
lewis_c402 2005-06-02
  • 打赏
  • 举报
回复
楼上的:

#include <iostream>

using namespace std;

template<class T>
class Array1D
{
public:
Array1D( int size = 0 );
Array1D( const Array1D<T>& v );
// int Size() { return size; }
private:
int size;
T *element;
};

template<class T> Array1D<T>::Array1D( int sz )
{
if( sz < 0 )
cerr << "error" << endl;
size = sz;
element = new T[sz];
}

template<class T> Array1D<T>::Array1D( const Array1D<T>& v)
{
if( this==&v )
cerr << "error/n";
cout << v.size; //那为什么这样用有能正确呢
size = v.size;
element = new T[size];

}

int main()
{
Array1D<int> a1;
// Array1D<int> &a2 = a1;
// cout << a2.size;
cin.get();

}
foochow 2005-06-02
  • 打赏
  • 举报
回复
类的方法都可以访问类的数据,cout是ostream的对象,你必须重载操作符<<才能想你那样写
friend ostream&operator<<(ostream&os,const Array1D&st)
{
os<<st.size<<endl;
return os;
}

lfeiman888 2005-06-02
  • 打赏
  • 举报
回复
声明为private的成员,只能被其声明所在类的成员函数和友元使用
声明为protected的成员,只能被其声明所在类的成员函数和友元,以及由该类的派生类的成员函数和友元使用
声明为public的,就不用说了吧.
lewis_c402 2005-06-02
  • 打赏
  • 举报
回复
那我写语句 cout << a1.size; 怎么又是错的
sunman1982 2005-06-02
  • 打赏
  • 举报
回复
类的public成员是可以访问他的private成员的

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧