point a()与point()的区别以及类和对象还可以用哪几种方式实现


调用point 函数是时,需要构造默认函数如point(){};而调用point a时,需要构造带参数函数;如point(int xx,int yy):x(xx),y(yy){}。
如果以上构造函数不想用,还可以:
1.在类中写一个普通初始化函数如:void init(int xx,int yy){x=xx;y=yy;},在主函数调用时,创建对象,用对象调用init()并在其中传入参数函数就行。
还是不想写函数间接调用也行,想直接直接调用成员数据例如int x,inty,可以:
2.把变量x,y设置为公有属性,就可以在主函数创建对象后直接用该类的对象引用公有成员啦。如:public:int x,y;创建point(类)a(对象);用对象访问并赋值:a.x=3;a.y=27;
显示出来就调用打印函数。
调用打印函数又有两种方式。(不一定是打印函数)

  1. 不用通过对象访问直接调用:这样的函数独立于类,但又与类关联,它就是友元函数,在类中先声明有这样一个函数(加关键字friend),如:friend void show();然后在类外写出完整函数体,只是不用加关键字了。如void show(point&p)
    2.需要用对象访问的函数,一,在类中定义完整函数体,如void show(point&p){cout<<p.x <<'\t'<<p.y <<endl;}。二,在类中先声明,void show(point&p);然后在类外写完整函数体,只是
    函数名前要加类名和作用域符号。void point::show(point&p){cout<<p.x <<'\t'<<p.y <<endl;}主函数调用就用创建的对象去访问,如point a;a.show();有参数就传入参数。
    有一种例外就是在类内无论声不声明友元函数,在类外写了完整的函数体 ,程序不报错,那就是要访问的对象是公有属性的,所以不依赖于友元关系来访问类的私有或受保护成员。
posted @ 2024-11-27 17:08  菲菲龙  阅读(59)  评论(0)    收藏  举报