美文网首页
C++中的指针和引用与Java中的引用区别

C++中的指针和引用与Java中的引用区别

作者: 日暮颂歌1991 | 来源:发表于2020-03-08 11:09 被阅读0次
    • C++的指针和Java中的引用比较像,在作为函数参数传递时,都可以在函数内部改变 ”外部“ 的值
    • C++的引用使用时必须是初始化的,他是一段内存的别名,因此也可以在函数内部改变”外部“的值,但是有一点不同是,它作为参数传递时在函数内部不能改变其本身的指向

    C++ 代码:

    #include <iostream>
    
    using namespace std;
    
    class Test {
    
    public:
        Test(int num) {
            this->num = num;
        }
    
    public:
        int num;
    };
    
    void change1(Test & t) {
        t.num = 2;
        // t = new Test(3); // 报错: 引用再次赋值
    }
    
    void change2(Test *t) {
        t->num = 2;
        t = new Test(3);    // 指针再次赋值,指向新内存 
    }
    
    int main(int argc, char const *argv[])
    {
        Test t = Test(1);
    
        cout << "------引用---------" << endl;
        cout << t.num << endl;
        change1(t);
        cout << t.num << endl;
        
    
        Test *t2 = new Test(1);
        cout << "------指针---------" << endl;
        cout << t2->num << endl;
        change2(t2);
        cout << t2->num << endl;
    
        return 0;
    }
    
    
    输出:
    ------引用---------
    1
    2
    ------指针---------
    1
    2
    

    Java 代码:

    
    class Test {
        public int num;
    
        Test (int num) {
            this.num = num;
        }
    }
    
    public class Learn {
        public static void change(Test t)
        {
            t.num = 2;
            
            t = new Test(3); // 引用 t 再次指向新对象,更像是 C++ 中的指针
        }
    
        public static void main(String[] args) {
            Test t = new Test(1);
            System.out.println(t.num);
            change(t);
            System.out.println(t.num);
        }
    }
    
    
    输出:
    1
    2
    

    相关文章

      网友评论

          本文标题:C++中的指针和引用与Java中的引用区别

          本文链接:https://www.haomeiwen.com/subject/wchddhtx.html