如果可以,举一个实际的例子吧
下面的例子中拷贝构造函数为什么可以出现"X=p.X"?顺便帮我讲一下当类的一个对象去初始化该类的另一对象的时候是如何调用拷贝构造函数
#include <iostream>
using namespace std;
class Point
{ public:Point(int xx=0,int yy=0){X=xx;Y=yy;}
Point(Point &p);
int GetX( ){return X;}
int GetY( ){return Y;}
private:int X,Y;
};
Point::Point(Point &p) {X=p.X;Y=p.Y;cout<<“拷贝构造函数被调用<<endl;}
void main()
{ Point A(1,2);Point B(A);cout<<B.GetX()<<endl;}
第1个回答 2009-10-27
私有数据成员只能由成员函数访问
class a{
private:
int b;
public:
a()
{
b=0;
}
void fun(void)
{
cout<<b++<<endl;
}};
class a{
private:
int b;
public:
a()
{
b=0;
}
void fun(void)
{
cout<<b++<<endl;
}};
第2个回答 2019-05-04
可以访问,因为C++中存在友元函数和友元类这个东西。
第3个回答 2018-04-08
#include <iostream>
using namespace std;
class Point
{
friend class Point;
public:
Point(int xx=0,int yy=0){X=xx;Y=yy;}
Point(Point &p);
int GetX( ){return X;}
int GetY( ){return Y;}
private:
int X,Y;
};
Point::Point(Point &p) {X=p.X;Y=p.Y;cout<<“拷贝构造函数被调用<<endl;}
void main()
{ Point A(1,2);Point B(A);cout<<B.GetX()<<endl;}
using namespace std;
class Point
{
friend class Point;
public:
Point(int xx=0,int yy=0){X=xx;Y=yy;}
Point(Point &p);
int GetX( ){return X;}
int GetY( ){return Y;}
private:
int X,Y;
};
Point::Point(Point &p) {X=p.X;Y=p.Y;cout<<“拷贝构造函数被调用<<endl;}
void main()
{ Point A(1,2);Point B(A);cout<<B.GetX()<<endl;}
只需要加上友元类就行了,自己是自己的友元类,则可以不同对象之间访问私有属性了。