设为首页 加入收藏

TOP

C++实践之超级for循环以及list与java中的差异讲解
2018-02-13 12:56:03 】 浏览:124
Tags:实践 超级 for 循环 以及 list java 差异 讲解

Java中的For循环中可以直接修改对象的属性

import java.util.ArrayList;
import java.util.List;
import java.util.regex.*;

public class main {
    static class Student {
        String name;
        int id;
        public Student(String name, int id) {
            this.name = name;
            this.id = id;
        }
        public void setName(String name) {
            this.name = name;
        }
        @Override
        public String toString() {
            return "Student [name=" + name + ", id=" + id + "]";
        }
    }

    public static void main(String[] args) {
        List
  
    mStudents = new ArrayList
   
    (); mStudents.add(new Student("Tony", 1)); mStudents.add(new Student("Lili", 2)); System.out.println("BEFORE: " + mStudents); for (Student student : mStudents) { if (student.id == 1) { student.setName("zhangsan"); } } System.out.println("AFTER: " + mStudents); } }
   
  

运行结果:

BEFORE: [Student [name=Tony, id=1], Student [name=Lili, id=2]]
AFTER: [Student [name=zhangsan, id=1], Student [name=Lili, id=2]]

而在C++中直接修改不会改变List中的对象属性。结果如下:

        for (Student student : mStudents) {
            if (student.id == 1) {
                student.setName("zhangsan");
            }
        }

需要加上取地址符才能达到java中的效果:

        for (Student &student : mStudents) {
            if (student.id == 1) {
                student.setName("zhangsan");
            }
        }

因为C++中讲究传值和传址。而java中并没有这个区分,都是传址,所以在子函数可以直接修改传递过来对象的属性值。而C++中就需要加上&取地址符以变成传址。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++虚函数表的应用详解 下一篇C++的内存地址分配和内存区划分详..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目