ChangHongJian
长虹剑
采纳率100%
2019-05-26 22:27

c++ 数组定义时即可作为参数吗?

已采纳

请看下面一段很简单的代码,在定义数组的时候就可以把这个数组作为参数传入,到底编译器内部是如何做的呢?非常困惑。请有知道的吗?

#include<iostream>
#include<algorithm>

using namespace std;

class Loss{
public:
   Loss(Loss **objs, int _id, int num=0){
        this->id = _id;
        this->objs = objs;
   }   

   void test(int num){
        for(int i=0;i<num;i++){
            cout<<objs[i]->id<<" ";
        }
        cout<<endl;
   }   

   int id; 
   Loss ** objs;

};

int main(){
    Loss * loss[] = { 
        new Loss(NULL, 111 ),
        new Loss(NULL, 222 ),
        new Loss(NULL, 333 ),
        new Loss(loss, 0, 3) // 这里内部编译过程是怎样的
    };  

    loss[3]->test(3); // 输出: 111 222 333

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 2年前

    Loss * loss[] = {
    new Loss(NULL, 111 ),
    new Loss(NULL, 222 ),
    new Loss(NULL, 333 ),
    new Loss(loss, 0, 3) // 这里内部编译过程是怎样的
    };

    相当于
    Loss * loss[];
    loss = {
    new Loss(NULL, 111 ),
    new Loss(NULL, 222 ),
    new Loss(NULL, 333 ),
    new Loss(loss, 0, 3) // 这里内部编译过程是怎样的
    };

    因此,loss已经存在了,可以被嵌套在初始化的里面。构成类似tree/linkedlist之类的数据结构

    点赞 1 评论 复制链接分享
  • VisualEleven Eleven 2年前

    调用 Loss类的构造函数 Loss(Loss **objs, int _id, int num=0)

    点赞 评论 复制链接分享

相关推荐