与c的结构体类似,用于对一个对象的各种 属性进行定义与描述。
![](https://i-blog.csdnimg.cn/blog_migrate/5244801029ae7b515636d56c5dd7d396.png)
不同的是,这里有public和private的区别:public类外部可以使用,例如main函数中定义一个student stu,那么stu.Print没有问题,但是stu.x报错了,因为private内的东西只有类内部成员才可以使用。
另外,类class有结构体没有的构造函数(与类同名的特殊函数)。它的主要工作其实是完成对象的初始化工作。
默认构造函数包含三个:分别是无参构造函数、全缺省构造函数、编译器自动为我们生成的构造函数(如果自己不定义就是这个,但凡自己定义了一个就不会自动生成另外一个)。
自定义类型的构造函数
有参的构造函数
特点:
函数名称与类名相同;
无返回值;
创建类类型的对象时(对象实例化时)由编译器自动调用,保证每个数据成员都有一个合适的初始值;
在该对象的整个生命周期中只会调用一次;
构造函数支持函数重载。
例如:
student(int a,int b):x(a),y(b){},为x和y初始化。
这个写法与以下相同
student(int a,int b)
{
x=a; y=b;
}
![](https://i-blog.csdnimg.cn/blog_migrate/8ca17007c6deac4313307bdd6644bf84.png)
第19行,定义对象的同时,构造函数同时被调用。
自定义类型,例如class,struct(class student就是student)类型,要用自定义类型的无参构造函数,不 然会报错;
其他的例如int,double类型可以不做处理,自动就是随机值。
![](https://i-blog.csdnimg.cn/blog_migrate/99fb6d3918430c6769097a26dc296f40.png)
如果有多个构造函数,函数重载,会根据对象声明时的参数个数对应class中的构造函数进行相应地调用。
![](https://i-blog.csdnimg.cn/blog_migrate/6a0d2ec12c93f0b0fe863da278a0cb14.png)
![](https://i-blog.csdnimg.cn/blog_migrate/70adbc26c02550152d1ab778b2d2c04a.png)