这是我开通博客的原因;虽然不是什么大问题;关于指针与对象(C++)

来源:互联网 发布:uvw平台对位算法教程 编辑:程序博客网 时间:2024/04/29 17:35

现在我还是一个本科大二的学生,前些阵子写作业的时候遇到了这个问题,花了很久才解决的,对于大神这一定就是神经回路里面的应有内容,不过我还是决定把这个作为我博客的第一条。

内容就是:

#include <iostream>using namespace std;class Point{public:    int  X;    Point(){        X=20;        cout<<"constructor"<<endl;        }    Point(int xx){        X=xx;        cout<<"constructor 2"<<endl;        }    Point(Point &p){        X=p.X;        cout<<"constructor 3"<<endl;        }};class A{public:    Point *po=new Point;};int main(){    cout<<endl<<"A demo:"<<endl;    A demo;                                  //声明一个类,会执行构造函数    cout<<endl<<"A* demo2:"<<endl;    A * demo2;                                //声明一个指向类的指针,不会执行构造函数    cout<<endl<<"Point demo3:"<<endl;    Point demo3;                             //声明一个类,会执行构造函数    cout<<endl<<"Point * demo4(demo.po):"<<endl;    Point * demo4(demo.po);                  //声明一个指向类的指针,不会执行构造函数    cout<<endl<<"Point demo6(30):"<<endl;    Point demo5(30);                         //声明对象时用一般构造函数,则只执行一般构造函数    cout<<endl<<"Point demo5(*demo4):"<<endl;    Point demo6(*demo4);                     //声明对象时用复制构造函数,则只执行复制构造函数    cout<<endl<<"Point *demo7 = new Point:"<<endl;    Point *demo7 = new Point;                //声明指针的时候用这种形式才会有对象,从而调用构造函数    return 0;}

上面的代码执行效果如下
这里写图片描述

当时写的一个数据结构里面BST的应用,试了很久,BST根本不能起作用,后来研究了很久,才发现,在BST的public里面我的所有成员变量都是指针形式,所以我就全部替换成了BSTNode *A = new BSTNode,这样我才成功地调用了构造函数,写完了作业,这个错误耽误了我一个星期的时间,其间每天起早贪黑。。。现在我很伤心。。。

0 0
原创粉丝点击