(一一八)对象数组

对象的数组,和声明一个普通的结构数组并没有什么区别。

 

在默认情况下,单纯的声明一个对象数组(未显式的调用构造函数时),那么将调用默认构造函数为对象数组的每个成员进行赋值(具体赋值情况需要根据默认构造函数而定)。

 

如代码:

#include<iostream>
#include<string>

class man
{
private:
	std::string name;
	int a;
public:
	man() { name = "no name";a = 0; }
	man(const char* na, int b) { name = na;a = b; }
	void show()
	{
		std::cout << name << ": " << a << std::endl;
	}
};

int main()
{
	man a[2];	//第一种声明方法,使用默认构造函数
	a[0].show();

	man b[2] =	//第二种声明方法,使用构造函数的重载函数
	{
		man{ "aa",1 },	//可以只声明一个,也可以声明一个里面的一个或几个成员(但前提是默认构造函数提供了默认参数)
		man{ "bb", 2 }	//这里就像单独声明一个对象一样,多个对象之间用逗号隔开
	};
	b[0].show();

	const int p = 2;
	man c[p] =	//也可以同时使用不同的构造函数
	{
		man(),		//这里使用默认构造函数
		man("xx",5)	//这里使用另一个构造函数

	};
	c[0].show();

	system("pause");
	return 0;
}

总结:

①三种声明方法:分别是:使用默认构造函数、使用构造函数并赋初值、二者混用。具体见代码。

 

②其他使用方法和声明、初始化结构数组并没有什么不用。

时间: 2024-08-06 20:00:16

(一一八)对象数组的相关文章

c++-哪位大师可以给我讲下给一维对象数组赋值的问题吗???谢谢

问题描述 哪位大师可以给我讲下给一维对象数组赋值的问题吗???谢谢 哪位大师可以给我讲下给一维对象数组赋值的问题吗???就比如给Employee emp[5]emp的五个元素赋值 解决方案 Employee emp[5]只是声明了5个对象,没有实例全是空的,赋值的时候要new新的对象实例出来.@caozhy给的代码不正确,没有加new.修改为:for (int i=0;i<5;i++)emp[i]=new Employee(构造函数的参数); 解决方案二: 循环,一个一个赋值.这个又什么好讲的.

关于对象数组的问题。。

问题描述 我今天写的时候,突然想要用用对象数组,可是怎么可以动态初始化一个对象数组的长度呢?请教了 解决方案 解决方案二:你可以看一下ArrayList的实现解决方案三:同意楼上的,用arraylist,其内部结构就是可变数组,而且你没有必要去声明数组长度解决方案四:ArrayList<Object>objects=newArrayList<Object>();解决方案五:arrayList存对象很好,上面的都说了.解决方案六:ArrayList不错学学容器以后有用的呵呵解决方案七

类对象数组有什么作用?

问题描述 classPhoto{string_title;photo(stringtitle){this._title=title;}......}classAlm{photo[]photos;Alm(intpage){photos=newphoto[page];}.......}classTest{staticvoidMain(string[]args){Almalm=newAlm(3);photoa=newphoto("Jem");photob=newphoto("Smi

两个对象数组 ojb1[],obj2[] 每个都有十几万条记录怎么在内存中做sql运算?

问题描述 从webservice上得到了两个对象数组ojb1[],obj2[]每个都有十几万条记录!!我要对它们执行select*fromobj1fulljoinobj2....运算出新的对象数组.1.把这两个数组进数据库后再执行sql运算.那有什么办法把他批量进库(一条条insert太慢了)?2.有什么办法在直接在内存中执行sql运算(我的平台不支持linq,在linq出来之前怎么做的)? 解决方案 解决方案二:关注,帮顶!解决方案三:引用1楼mawering的回复: 关注,帮顶! 解决方案四

JAVA与C++ 对对象数组的不同处理

c++|对象|数组 问题:public class test{ public static void main(String[] args) { Person[] a = new Person[2]; for(int i = 0; i < 2; i++) { a[i].age = i; //空指针异常 System.out.println(a[i].age); } }} class Person{ public int age; public Person(int age) { this.age

struts 2中对象数组的传值

大家用struts2时想必会经常遇到在JS或者JSP中往后台传递对象数组的问题,你是不是在一直为后台取值是null的问题而苦恼呢?下边我来告诉大家究竟如何做才能取到值. 一.在Action中声明数组对象(这里也可以是List等集合),代码如下: public List<User> users = new ArrayList<User>(); 这里有两点需要注意: 1.声明可以是public也可以是private,private 要求必须生成get.set方法,推荐使用第二种方式,原

扩展js对象数组的OrderByAsc和OrderByDesc方法

  看了一段时间关于js原型的知识,js的扩展方法是基于原型的,如Array.prototype.XXXX就是给Array扩展XXX方法,然后数组都能使用这个方法了. 在对象数组里面经常有根据属性来进行排序的,升序,降序的,于是自己就想写一个类似于C#里面的orderBy的方法,代码如下: 代码如下: Array.prototype.OrderByAsc = function (func) { var m = {}; for (var i = 0; i < this.length; i++) {

解析dom中的children对象数组元素firstChild,lastChild的使用

以下是对dom中的children对象数组元素firstChild,lastChild的使用进行了详细的分析介绍,需要的朋友可以参考下   复制代码 代码如下: <!--children对象数组元素示例 --> <html> <body>   <table   id="tbl">     <tbody> <tr> <td> 行1列1 </td><td>行1列2 </td&g

JQuery使用index方法获取Jquery对象数组下标的方法

  本文实例讲述了JQuery使用index方法获取Jquery对象数组下标的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65