在类的对象的初始化中为什么需要构造函数?
2011-03-10 09:31
239 查看
/
/类需要构造函数
类是一种抽象结构,而不是一种实体,并不占用存储空间。所以在定义类结构体的时候,是不可以对类中的成员进行初始化的。
例如以下的做法就是错误的:
class student{
name = " ";
number = 0;
score = 0;
}
因为类型没有内存空间的,所以没有办法存放初始化的数据。
而类的对象不同,需要容纳数据,占用空间。如果初始化一个student对象,那么stud1是占用内存空间的;
student stud1;
stud1 = {“lilei”, 2011, 98};
可以使用lilei,学号是2011,成绩是98分,来初始化stud1这个同学。这种情况成立的前提条件是name, number, score对对象来说都是可见(public)的。
类中有3种访问模式:public、private和protested。
如何是private的,即不可见的,那我们就不可以这样进行初始化,因为对于不可见的成员,不知道哪些需要进行初始化,而哪些又是不用的。
如果是同一个人用定义的类,用户也是自己,可以知道类中的全部成员,但是如果是别人给的类,我什么就根本不知道其中有多少的成员函数。
所以通过引入构造函数,来解决类的对象的初始化问题。
在类中定义构造函数,构造函数和类同名,在类定义体外也可以定义。
/类需要构造函数
类是一种抽象结构,而不是一种实体,并不占用存储空间。所以在定义类结构体的时候,是不可以对类中的成员进行初始化的。
例如以下的做法就是错误的:
class student{
name = " ";
number = 0;
score = 0;
}
因为类型没有内存空间的,所以没有办法存放初始化的数据。
而类的对象不同,需要容纳数据,占用空间。如果初始化一个student对象,那么stud1是占用内存空间的;
student stud1;
stud1 = {“lilei”, 2011, 98};
可以使用lilei,学号是2011,成绩是98分,来初始化stud1这个同学。这种情况成立的前提条件是name, number, score对对象来说都是可见(public)的。
类中有3种访问模式:public、private和protested。
如何是private的,即不可见的,那我们就不可以这样进行初始化,因为对于不可见的成员,不知道哪些需要进行初始化,而哪些又是不用的。
如果是同一个人用定义的类,用户也是自己,可以知道类中的全部成员,但是如果是别人给的类,我什么就根本不知道其中有多少的成员函数。
所以通过引入构造函数,来解决类的对象的初始化问题。
在类中定义构造函数,构造函数和类同名,在类定义体外也可以定义。
相关文章推荐
- Java构造函数 为什么需要无参构造函数
- object对象重写equals方法时为什么需要重写hashCode方法
- StaticCodeDemo.java:29: 错误: 方法声明无效; 需要返回类型 person(){//给对应的对象进行针对性的初始化。
- 我们为什么需要DTO(数据传输对象)
- 为什么在实例化子类的对象的时候会调用先调用父类的构造函数
- C++中为什么构造函数初始化列表
- 为什么JAVA对象需要实现序列化?
- 设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化
- 派生类的构造函数及其对象的初始化
- cocos2d-x学习笔记--创建对象、构造函数及初始化
- C++-什么时候需要在类的构造函数中使用初始化列表
- [Java] Java反射为什么需要无参构造函数
- 第五周项目一----通过增加构造函数使对象在定义时初始化(4种方法统编)
- 为什么作为成员变量的类对象,不用初始化也不报错,而作为非成员变量的类对象,不初始化就会报错?
- 子类对象初始化过程中构造函数调用的若干规则
- 为什么单例对象的并发调用需要同步?
- Objective-C初始化对象的时候为什么总是有一句:if (self = [super init])
- C++中为什么需要将new对象通过独立语句置入智能指针
- objective-c中的构造函数(对象初始化)(七)
- 什么是相关性以及为什么需要初始化它?