C++中提供了类的概念,其目标就是希望能够像初始化普通变量那样初试化对象,例如:定义了Student类(姓名,学号,数学成绩)
#include<iostream>
#include<string>
using namespace std;
class Student
{
private:
string name;
int num;
float math;
};
int main()
{
}
现在直接在主函数中定义对象stu1并对其初始化:Student stu1("Lili",120,105);这是不可以的,因为类中的数据成员是私有的,不能在类外直接访问其私有数据成员,加入我们把上述类改为结构体:
#include<iostream>
#include<string>
using namespace std;
struct Student
{
string name;
int num;
float math;
};
int main()
{
Student stu1;
stu1.math=105;
}
可以发现这个时候,我们可以直接对其赋值,因为结构体中的数据是公有的,可以直接访问。那为什么不直接把类中的数据成员声明为公有的呢?因为,如果将类中的数据成员声明为公有的,就违背了类的一个初衷-----数据的隐藏。为了完成对于对象的初始化,C++提供了构造函数来实现对于对象的初始化,使得可以像对普通变量那样初始化的方法对对象初始化。
构造函数的函数名跟类名相同,但是没有返回值,对于上述类,其构造函数为Student( ){ }
当用类名定义对象的时候,就会调用构造函数,对对象初始化。