【大家好】程序中有一部分 我实在想不明白【定义对象和初始化和一合并?】
程序代码:
#include<iostream> using namespace std; //定义类 class Arr { int m; //数组实际元素个数 int a[100]; public: Arr(int x[],int size)//构造函数,用size始化m,用参数x初始化数组a { m=size; for(int i=0;i<m;i++) a[i]=x[i]; } void delsame(); void show() { for(int i=0;i<m;i++) { cout<<a[i]<<"\t"; if((i+1)%5==0) cout<<endl; } cout<<endl; } }; //定义类内函数delsame() void Arr::delsame()//删除重复数据 { int i,j; for(i=0;i<m-1;i++) { if(a[i]==a[i+1]) { for(j=i+1;j<m-1;j++) { a[j]=a[j+1]; } m--;//删除一个数据后元素个数减一 i--;//可能出现连续多个相同的数,so 继续判断当前元素 } } } //主函数 int main() { int b[16]={1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10}; Arr v(b,sizeof(b)/sizeof(b[0]));//此行我想不懂 v.show();//显示原数组 v.delsame(); v.show();//显示结果数组 return 0; }
我想问的有两点:(1)关于sizeof,我记得sizeof(数组)得到的是数组中的元素个数,而b数组中的元素个数是已知的,是不是可能这样做:Arr v(b,16);
(2)Arr是类也是构造函数,从程序中可以看出v是定义的对象了,那为什么可以这样定义 Arr v(b,sizeof(b)/sizeof(b[0]));难道Arr在此处可以初始化,还可以定义对象吗?C++中有这种语法吗?