精华内容
下载资源
问答
  • 对象数组的初始化方法
    万次阅读 多人点赞
    2018-05-05 11:28:56

    对象数组:数组中每个元素为一个对象。

    在建立数组时,可以在定义数组时提供实参以实现初始化。

    1、如果构造函数只有一个参数,可以直接在等号后面的花括号内提供实参,如:

              Student stu【3】={10,20,30};

    2、如果构造函数有多个参数,在定义时在花括号中分别写出构造函数名并在括号内指定实参。如下:构造函数有3个参数,分别代表学号,年龄,成绩,在定义时可以:

               Student stu【3】={

                                                 Student(1001,18,80),

                                                 Student(1001,18,80),

                                                 Student(1001,18,80),

                                            };

         在建立对象数组时,分别调用构造函数,对每个元素进行初始化。每个元素的实参分别用括号括起来,对应构造函数的一组形参,不会混淆。

    3、输出3个立方体的体积,用对象数组的方法。


      调试结果:




    更多相关内容
  • 对象数组初始化

    2022-04-23 09:59:19
    对象数组初始化问题为什么使用对象数组遇到的问题解决方法 为什么使用对象数组 为了满足用户创建同一个类的多个对象。 遇到的问题 应使用“{…}”初始化聚合对象 不存在默认构造函数 #include<iostream> ...

    为什么使用对象数组

    为了满足用户创建同一个类的多个对象。

    遇到的问题

    1. 应使用“{…}”初始化聚合对象
    2. 不存在默认构造函数
    #include<iostream>
    using namespace std;
    class point
    {
    public:
    	//point(){};
    	point(float x,float y,float z){
    		m_x = x;
    		m_y = y;
    		m_z = z;
    	};
    	float m_x, m_y, m_z;
    };
    
    void main()
    {
    	point p[2];//报错
    	p[1] = point(2, 2, 3);
    	while (1)
    	{
    	}
    }
    

    解决方法

    首先要知道,如果我们没有创建显式初始化对象,也就是说自己写一个构造函数时,总是会调用默认构造函数,很明显我们上面写了构造函数point(float x,float y,float z)所以也就不存在默认构造函数了,所以想要按照上面的方式进行初始化就需要在写一个无参构造函数,代码改写一下:

    #include<iostream>
    using namespace std;
    class point
    {
    public:
    	point()
    	{
    		cout << "调用无参构造函数" << endl;
    	};
    	point(float x,float y,float z){
    		m_x = x;
    		m_y = y;
    		m_z = z;
    		cout << "调用构造函数" << endl;
    	};
    
    
    	float m_x, m_y, m_z;
    };
    
    void main()
    {
    	point p[2];
    	//p[0] = point(1, 2, 3);
    	p[1] = point(2, 2, 3);
    	while (1)
    	{
    	}
    }
    

    在这里插入图片描述
    可以清楚看到调用了两次无参构造和一次有参构造;

    当然还可以通过函数体方式进行初始化(花括号括起来,逗号隔开),在初始化过程中可以调用不同的构造函数,具体实现如下:

    #include<iostream>
    using namespace std;
    class point
    {
    public:
    	point()
    	{
    		cout << "调用无参构造函数" << endl;
    	};
    	point(float x,float y,float z){
    		m_x = x;
    		m_y = y;
    		m_z = z;
    		cout << "调用构造函数" << endl;
    	};
    
    
    	float m_x, m_y, m_z;
    };
    
    void main()
    {
    	point p[2]{point(),point(1, 2, 3)};
    	while (1)
    	{
    	}
    }
    

    运行结果如下:

    在这里插入图片描述
    由于存在无参构造函数,所以可以使用省略的方式实现构建,具体实现如下:

    #include<iostream>
    using namespace std;
    class point
    {
    public:
    	point()
    	{
    		cout << "调用无参构造函数" << endl;
    	};
    	point(float x,float y,float z){
    		m_x = x;
    		m_y = y;
    		m_z = z;
    		cout << "调用构造函数" << endl;
    	};
    
    
    	float m_x, m_y, m_z;
    };
    
    void main()
    {
    	point p[2]{point(1, 2, 3)};
    	while (1)
    	{
    	}
    }
    

    在这里插入图片描述

    展开全文
  • c++对象数组初始化

    千次阅读 2020-04-17 16:28:32
    在学习c++对象数组时,无意中发现书中写到的数组初始化,测试过程中发现若自己写上拷贝构造函数,则会报错,而如果形参是常引用居然可以通过。 这里附上参考了一下大佬的博客,关于移动构造函数与复制构造函数 属实...

    C++对象数组的初始化

    只是对学习过程中遇到的一点小疑惑搜集了一点资料,才疏学浅,就当是笔记了。
    在学习c++对象数组时,无意中发现书中写到的数组初始化,测试过程中发现若自己写上拷贝构造函数,则会报错,而如果形参是常引用居然可以通过。
    这里附上参考了一下大佬的博客,关于移动构造函数与复制构造函数
    属实”无聊“的我进行了一番这“无用”的研究。不过了解了移动构造函数,复制构造函数,左右值引用的区别也算没浪费时间。嘿嘿

    对象数组的初始化:逐个元素调用构造函数进行初始化。
    如1. clock c1[5];//调用默认构造函数对每个对象元素进行初始化;
    2.如果在定义时进行初始化,如clcok c1[5]={clock(10,20,30),clock(40,50,60)};对于c1[0],c1[1]这里是复制初始化;
    赋值运算符右边是一个右值,不能获得地址。
    所以这里与右值引用相匹配,让编译器知道使用移动构造函数或者复制构造函数(如果不是自己实现,则是浅复制)(c++11)来初始化对象数组。
    而对于一般的构造对象 clock c1(1,2,3)这里是左值,所以与左值引用相匹配,调用构造函数。

    //这里不是拷贝函数 而是复制构造函数 
    		clock(const clock &p):s(p.s),m(p.m),h(p.h){
    			cout<<"复制构造函数"<<endl;
    		} 
    		//形参若为(clock &p)是指是获取的左值的地址
    		//(而右值是无法获取地址的) 
    		
    		
    		clock( clock &&p):s(p.s),m(p.m),h(p.h){
    			cout<<"移动构造函数"<<endl;
    		}
    		
    		
    		clock(clock &p):s(p.s),m(p.m),h(p.h){
    			cout<<"拷贝构造函数"<<endl;
    			}
    		//是指传的是地址,所以s,m,h得到的是p的原地址 (即浅拷贝) 
    		
    

    在这里插入图片描述
    在这里插入图片描述
    即使编译器忽略了移动/拷贝构造函数,但是在这个程序点上,移动/拷贝构造函数是必须的且是可访问的。
    也就是说如果是右值引用,就必须有相应的移动构造函数,或者复制构造函数。两者至少其中之一。

    展开全文
  • Java对象数组初始化

    千次阅读 2022-03-06 12:39:36
    对象数组的声明可以有两种方式,以Student为例 对象数组初始化也有两种 一种是静态的初始化 一种是动态的初始化

    对象数组的声明可以有两种方式,以Student为例

    对象数组的初始化也有两种

    一种是静态的初始化

    一种是动态的初始化

     

    如果动态初始化时。创建对象不进行new Student(1,'a'),而直接调用move方法,就会报错,说明无法像c++那样将对象放入栈中。
    
    class Student {
        public int Id;
        public String Name;
    
        Student(int i, String b) {
            Id = i;
            Name = b;
        }
    
        void Move() {
            Id = 1;
            Name = "0";
        }
    
    }
    展开全文
  • C++ 类对象数组初始化

    万次阅读 多人点赞 2018-11-02 21:13:24
    如何给类中定义了带有参数的构造函数的对象数组赋值 class A { public: A(){}//无参构造函数0 A(int i){}//有参构造函数1 A(int i,int j){}//有参构造函数2 }; int main() { A a,b[5];//调用6次无参构造函数...
  • C++数组初始化方法

    千次阅读 2020-12-31 08:50:11
    //array of 10 uninitialized ints此new表达式分配了一个含有 10 个int型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针pia。在自由存储区中创建的数组对象是没有名字的,只能通过其地址间接...
  • C++对象数组初始化

    2018-01-30 11:18:00
    C++对象数组初始化 类对象 数组 初始化可以使用构造函数初始化,同时类有不同的构造函数,可以对类对象数组元素使用不同的构造函数; posted on 2018-01-30 ...
  • java对象数组初始化 看完我悟了

    千次阅读 2020-12-29 16:41:29
    public static void main(String[] args) { ...//1 初始化数组 for (int i = 0; i < 10; i++){ System.out.println(str[i]);//打印出来的是null } for (int i = 0; i < 10; i++){ str[i] =...
  • C# 对象数组初始化

    千次阅读 2020-06-03 17:22:09
    C# 对象数组初始化: //定义一个对象的类,包含2个文本属性 public class menunode { public string name; public string text; } //初始化一个类的数组 public static menunode[] ms = new menunode...
  • 对象数组的定义和使用: 对象数组的定义与一般数组的定义类似,但是需要为每一个元素实例对象数组的声明形式是: 类名 对象数组名 [ ]; 为对象数组分配内存空间: 对象数组名=new 类名[数组长度];//注意 :...
  • java代码-例子4-7 用字符数组初始化String对象
  • 数组不能为另一个内置类型的数组赋初值,也不允许使用vector对象初始化数组。但是允许使用数组初始化vector对象,只需指明要拷贝区域的首元素地址和尾后地址就可以了: int test[] = {0, 1, 2, 3, 4, 5}; vector...
  • 对象数组初始化问题

    千次阅读 2018-11-01 20:06:49
    对象数组不会自动初始化,所以要对每个元素初始化。 如: JField []txt=new JField[4]; ------这里只是new了一个对象数组,并没有初始化数组元素 txt[0]=new JField();-------------因为对象数组不会自动初始化,...
  • C++对象数组初始化

    万次阅读 2019-03-08 14:50:33
    如果一个类有默认的构造函数,使用new动态实例一个对象数组不是件难事,如下代码: class animal { public: animal():num(0) {} ~animal() {} private: int num; }; Animal *ani = new Animal[5]; delete...
  • class A { public: A(const int a1):aa(a1) { } private: const int aa; }; class B { public: B(const int b1,const int b2,const int b1):aaa(a1) { } private: ...怎么初始化
  • 一维数组初始化: 动态初始化:(声明并开辟数组) 数据类型[ ] 数组名称=new 数据类型[长度] int[ ] data=new int [5] :声明并开辟一个长度为5的数组 数组通过下标索引来获取元素,下标默认从0开始。数组下标...
  • 数组 – matlab初始化对象数组

    千次阅读 2021-04-19 08:42:21
    看起来您正在尝试创建一个句柄对象(Shooters)数组,并将其存储在另一个句柄对象(Squardron)的属性中.我有一个非常similar problem discussion可能会帮助你.简而言之:你在做什么可能不是很漂亮 – 但可能已经很好了....
  • 关于C++ new动态创建对象数组初始化方法 #include <iostream> #include <string> #include <stdlib.h> class student{ private: static int object_count; int score; string name; ...
  • 方法一 Array(10).fill(null).map(() => ({})) // [{},{},···, {}] 方法二 Array.form(Array(10), () => ({})) // // [{},{},···, {}]
  • 【C++】C++对象数组的定义和初始化

    千次阅读 2021-09-24 15:13:17
    如果一个类有默认的构造函数,使用new动态实例化一个对象数组不是件难事,如下代码: class animal { public: animal():num(0) ...想要初始化对象数组的同时指定各个构造函数的参数,有以下几种解...
  • 事实上在C++11有了列表初始化之后new创建对象数组也可以使用自定义的构造函数进行初始化了,方法和基本数据类型也一样。
  • java代码-例子4-6 用字节数组初始化String对象
  • 编程题3_1对象数组初始化[借鉴].pdf
  • JAVA中怎么初始化对象数组?java中怎么创建对象数组?比如我创建了一个学生类Sclass Student{ } 类中怎么创建学生类兑现数组?学生类: class A{ private String name; private int age; public String getName() { ...
  • 【C++】C++数组初始化方法

    万次阅读 多人点赞 2018-12-17 22:13:55
    定义: int *pia = new int[10];...此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针 pia。 在自由存储区中创建的数组对...
  • cpp-数组初始化

    千次阅读 2020-12-09 15:38:50
    title: cpp-数组初始化 date: 2020/6/29 11:35:57 categories: C++ tags: 数组 初始化 在C++中,普通数组是固定长度的,标准库类型vector可理解为可扩充数组(即长度不固定)。 编译参数:g++ --std=c++2a ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 737,489
精华内容 294,995
热门标签
关键字:

对象数组的初始化方法