• java中的引用于c++的指针的相互代替(就以创建简单的栈去讲解)


    class node
    {
        int data;
    }
    
    class MyStack        //null是代表不确定的对象
    {
        private ArrayList<node>top=new ArrayList<node>();
        private node rear[];      //用这个的话只能同过node加Index下标的索引去得到数组的大小
    
        public boolean pushStack(node elem)
        {
            rear=new node[12];   //1、new 出的时引用
            node ee=new node();  //new 出的是对象再返回一个引用
            ee.data=666;
            rear[0]=ee;
            top.add(elem);       //2、将new出来的引用代替之前的null
            return true;         //3、1和2中这两种创建空间时创建的内容都相同,只不过ArrayList是动态的   
        }
        
        public node popStack()
        {
    struct node
    {
        int data;
    };
    
    //显然,在C++中NULL的值和0是等价的。然而这就引发了一个严重的重载问题,例如下面两个函数:
    //void fun(int a, int *b); void fun(int a, int b);

     //可以看出我们想调用的是:void fun(int a, int *b);但实际上我们调用的是第二个函数

     //而C++11中添加的nullptr就可以解决这个重载问题,减少很多不必要的BUG,编译环境允许的话,还是多多使用nullptr吧。


    class MyStack //NULL代表的是值#define NULL ((void *)0) { private: node * data=NULL; node * rear=NULL; public: bool InitStack() { data=new node[10]; //这个new是真正的创建了对象,而不是空引用但是这个对象是空的 //简单的说就是有空间没内容,而java是引用既没空间又没内容(自己这么一说让我觉得java还更加好些) //(因为反正数据要随着空间一起过来,提前放空间与放引用都一样,而且刚开始便分配空间反而会造成空间的浪费) //(可能相同的程序用c++要比用java用更多的空间) rear=data; return true; } bool pushStack(node &elem) { *data++=elem; //node * data与data[0]=elem和java中的node top[]与top[0]=elem最终的表现形式不是都相同的吗 //不同的是在访问数组的时候c++的指针可以通过位移用指针直接访问而java中如果是数组的只能用下标 //如果是ArrayList接口的具体实现类的话可以用它里面封装的方法如get,set remove等 //所以说java中要用这种具体的类去做数组的封装已实现一些c++中的指针的功能 return true; } node popStack() { return *--data; } };
    
    
    
            System.out.println(rear[0].data);
            return top.remove(top.size()-1);
        }
    
        public int GetSize()
        {
            return top.size();        
        }
    
    }
  • 相关阅读:
    (十一)Activitivi5之流程控制网关:连线
    (十)Activitivi5之启动流程/完成任务的时候设置流程变量
    (九)Activitivi5之使用 RuntimeService 设置和获取流程变量
    (八)Activiti之流程变量和局部流程变量
    (七)Activiti之历史活动查询和历史任务查询和流程状态查询
    (六)Activiti之实现学生请假流程
    (五)Activiti之查看最新版本的流程定义
    (五)Activiti之获取流程定义图片和流程定义删除
    (四)Activiti之流程定义部署之ZIP方式和流程定义查询
    java程序中执行HiveQL
  • 原文地址:https://www.cnblogs.com/z2529827226/p/11638121.html
Copyright © 2020-2023  润新知