在Y类中的数据成员是:X类的对象a,即X a(此处X a即看成Y类中的数据成员); 而a.x整体可以看成一个参数,因为a是对象,不能赋值,能赋值的是对象中的数据成员,即a.x(此处a.x即看成一实参); 对于X::y,因为y是X类中的静态数据成员,静态数据成员只能在类外进行初始化,此处即是:在类外对y进行初始化,说y是类X中的静态数据成员,并被赋初值1(注意:“::”是作用于运算符,也可以理解为属于的意思,即y是属于类X的)。
X a是生成类对象a。
a.x是用X类对象a去调用数据成员x
X::y 是指这个数据成员y来自类X
类Y是类X的友元类,看代码,Y是对X的部分参数初始化,所以在Y里要实例化一个X类,a.x就是将Y实例化的X类a的x赋值,X::y,则是对X的实例化对象的y值赋值,X::y的存在要X被实例化后才有意义,所以main函数中先X b再Y c,重复调用b.print()也就是对比生成Y c后,X类的值有无改变。
没学多久,有错请指正!