VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 860|回复: 2

[已解决]求大家帮我改一改下边这段代码,深拷贝练习,很简单的哦

[复制链接]
65_avatar_middle
最佳答案
0 
在线会员 发表于 2022-3-27 22:04:53 | 显示全部楼层 |阅读模式
一、定义Point类,包含:

私有数据成员:   x和y表示点的坐标;

公有成员:

构造函数,将坐标默认初始化为(0,0)

有参数构造函数,根据形参初始化点的初始位置

拷贝构造函数

析构函数

move函数,实现点的移动,也就是坐标改变

getx函数,实现返回x坐标

gety函数,实现返回y坐标

setx函数,实现设置x坐标

sety函数,实现设置y坐标   

二、定义Point数组类(类名AofPoint),包括:

私有数据:

  指向数组的指针,数组的元素个数。

公有成员:

构造函数,实现大小为size的Point数组的初始化(动态创建)

析构函数

拷贝构造函数(深层拷贝)

visit_Point函数,实现通过下标访问数组中的特点Point元素
求大家帮我改一改下边这一段代码,很简单哦求大家帮我改一改下边这段代码,深拷贝练习,很简单的哦


  1. #include <iostream>
  2. using namespace std;
  3. class Point{
  4.         private:
  5.                 int x,y;
  6.         public:
  7.                 Point(){
  8.                         x=0;
  9.                         y=0;
  10.                 }
  11.                 Point(int x1,int y1){
  12.                         x=x1;
  13.                         y=y1;
  14.                 }
  15.                 Point(Point& po){
  16.                         x=po.x;
  17.                         y=po.y;
  18.                 }
  19.                 ~Point(){};
  20.                 void move(int x2,int y2){
  21.                         x=x2;
  22.                         y=y2;
  23.                 }
  24.                 int getX(){
  25.                         return x;
  26.                 }
  27.                 int getY(){
  28.                         return y;
  29.                 }
  30.                 void setx(int x3){
  31.                         x=x3;
  32.                 }
  33.                 void sety(int y3){
  34.                         y=y3;
  35.                 }
  36. };
  37. class AofPoint{
  38.         private:
  39.                 Point* aof;
  40.                 int size;
  41.         public:
  42.                 AofPoint(int h){
  43.                         size=h;
  44.                 aof=new Point[size];
  45.                 }
  46.                 ~AofPoint(){};
  47.                 AofPoint(AofPoint& ao){
  48.                         Point* m;
  49.                         m=new Point[size];
  50.                         aof=ao.aof;
  51.                         size=ao.size;
  52.                 }
  53.                 void visit_point(int i){
  54.                         aof[i];
  55.                 }
  56.                
  57. };
  58. int main()
  59. {
  60.         AofPoint afp(3);//创建afp对象时,也设置了动态对象数组的大小

  61.         afp.visit_point(1).move(4,6);
  62.         afp.visit_point(2).move(8,16);
  63. //        cout << "输出第一个对象数组内容" << endl;
  64.         cout << "point(1):x=" << afp.visit_point(1).getX()  << ",y=" << afp.visit_point(1).getY() << endl;
  65.         cout << "point(2):x=" << afp.visit_point(2).getX() << ",y=" << afp.visit_point(2).getY() << endl;
  66.        
  67.         AofPoint afp2(afp);
  68. //        cout << "输出第二个对象数组内容" << endl;
  69.         cout << "point(1):x=" << afp2.visit_point(1).getX() << ",y=" << afp2.visit_point(1).getY() << endl;
  70.         cout << "point(2):x=" << afp2.visit_point(2).getX()  << ",y=" << afp2.visit_point(2).getY() << endl;
  71. //        cout << "改变第一个对象数组的内容,看看是否影响第二个对象数组" << endl;
  72.         cout<<"Change:\n";       
  73.         afp.visit_point(1).move(8, 8);
  74.         afp.visit_point(2).move(9, 9);
  75. //        cout << "输出第一个对象数组的内容" << endl;

  76.         cout << "point(1):x=" << afp.visit_point(1).getX() << ",y=" << afp.visit_point(1).getY() << endl;
  77.         cout << "point(2):x=" << afp.visit_point(2).getX() << ",y=" << afp.visit_point(2).getY() << endl;
  78. //        cout << "输出第二个对象数组内容" << endl;
  79.         cout << "point(1):x=" << afp2.visit_point(1).getX() << ",y=" << afp2.visit_point(1).getY() << endl;
  80.         cout << "point(2):x=" << afp2.visit_point(2).getX()  << ",y=" << afp2.visit_point(2).getY() << endl;
  81. //        cout << "若第二个对象数组内容还是原来的,说明达到了深层复制的目的" << endl;

  82.         return 0;
  83. }
复制代码
最佳答案
01_avatar_small
2022-3-28 10:08:16
是这意思吗
#include <iostream>
#include "tchar.h"
using namespace std;
class Point {
public:
        int x, y;
public:
        Point() {
                x = 0;
                y = 0;
        }
        Point(int x1, int y1) {
                x = x1;
                y = y1;
        }
        Point(Point& po) {
                x = po.x;
                y = po.y;
        }
        ~Point() {};
        void move(int x2, int y2) {
                x = x2;
                y = y2;
        }
        int getX() {
                return x;
        }
        int getY() {
                return y;
        }
        void setx(int x3) {
                x = x3;
        }
        void sety(int y3) {
                y = y3;
        }
};
class AofPoint {
public:
        Point* aof;
        int size;
public:
        AofPoint(int h) {
                size = h;
                aof = new Point[size];
                //Init_point();
        }
        ~AofPoint() {
                delete[]aof;
        };
        AofPoint(AofPoint& ao) {
                Point* m;
                m = new Point[size];
                aof = ao.aof;
                size = ao.size;
        }
        void visit_point(int i) {
                cout <<"x = " << aof[i].x <<" y = " << aof[i].y << endl;
        }
        void Init_point() {
                for (int i = 0; i < size; i++)
                {
                        cout << ("输入x") << endl;
                        cin >> aof[i].x;
                        cout << ("输入y") << endl;
                        cin >> aof[i].y;
                }
        }

};
int main()
{
        AofPoint afp(2);//创建afp对象时,也设置了动态对象数组的大小
        afp.visit_point(1);

        return 0;
}




上一篇:定时 tcpip DLL 通讯 就一页代码
下一篇:vc++高级班之多线程
01_avatar_middle
最佳答案
1 
donate_vip 发表于 2022-3-28 10:08:16 | 显示全部楼层    本楼为最佳答案   
bestAnswer
是这意思吗
#include <iostream>
#include "tchar.h"
using namespace std;
class Point {
public:
        int x, y;
public:
        Point() {
                x = 0;
                y = 0;
        }
        Point(int x1, int y1) {
                x = x1;
                y = y1;
        }
        Point(Point& po) {
                x = po.x;
                y = po.y;
        }
        ~Point() {};
        void move(int x2, int y2) {
                x = x2;
                y = y2;
        }
        int getX() {
                return x;
        }
        int getY() {
                return y;
        }
        void setx(int x3) {
                x = x3;
        }
        void sety(int y3) {
                y = y3;
        }
};
class AofPoint {
public:
        Point* aof;
        int size;
public:
        AofPoint(int h) {
                size = h;
                aof = new Point[size];
                //Init_point();
        }
        ~AofPoint() {
                delete[]aof;
        };
        AofPoint(AofPoint& ao) {
                Point* m;
                m = new Point[size];
                aof = ao.aof;
                size = ao.size;
        }
        void visit_point(int i) {
                cout <<"x = " << aof[i].x <<" y = " << aof[i].y << endl;
        }
        void Init_point() {
                for (int i = 0; i < size; i++)
                {
                        cout << ("输入x") << endl;
                        cin >> aof[i].x;
                        cout << ("输入y") << endl;
                        cin >> aof[i].y;
                }
        }

};
int main()
{
        AofPoint afp(2);//创建afp对象时,也设置了动态对象数组的大小
        afp.visit_point(1);

        return 0;
}
65_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-3-28 22:00:46 | 显示全部楼层
TK4Moma 发表于 2022-3-28 10:08
是这意思吗
#include
#include "tchar.h"

不好意思,我没有表述清楚,原题是这样子:
#include <iostream>
using namespace std;
// 在此处补充你的代码
int main()
{
        AofPoint afp(3);//创建afp对象时,也设置了动态对象数组的大小

        afp.visit_point(1).move(4,6);
        afp.visit_point(2).move(8,16);
//        cout << "输出第一个对象数组内容" << endl;
        cout << "point(1):x=" << afp.visit_point(1).getX()  << ",y=" << afp.visit_point(1).getY() << endl;
        cout << "point(2):x=" << afp.visit_point(2).getX() << ",y=" << afp.visit_point(2).getY() << endl;
       
        AofPoint afp2(afp);
//        cout << "输出第二个对象数组内容" << endl;
        cout << "point(1):x=" << afp2.visit_point(1).getX() << ",y=" << afp2.visit_point(1).getY() << endl;
        cout << "point(2):x=" << afp2.visit_point(2).getX()  << ",y=" << afp2.visit_point(2).getY() << endl;
//        cout << "改变第一个对象数组的内容,看看是否影响第二个对象数组" << endl;
        cout<<"Change:\n";       
        afp.visit_point(1).move(8, 8);
        afp.visit_point(2).move(9, 9);
//        cout << "输出第一个对象数组的内容" << endl;

        cout << "point(1):x=" << afp.visit_point(1).getX() << ",y=" << afp.visit_point(1).getY() << endl;
        cout << "point(2):x=" << afp.visit_point(2).getX() << ",y=" << afp.visit_point(2).getY() << endl;
//        cout << "输出第二个对象数组内容" << endl;
        cout << "point(1):x=" << afp2.visit_point(1).getX() << ",y=" << afp2.visit_point(1).getY() << endl;
        cout << "point(2):x=" << afp2.visit_point(2).getX()  << ",y=" << afp2.visit_point(2).getY() << endl;
//        cout << "若第二个对象数组内容还是原来的,说明达到了深层复制的目的" << endl;

        return 0;
}
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-12-3 19:12

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表