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

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

内容就是:

#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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值