构造函数
- 构造函数
- a)函数名和类名相同,可以有参数,但不能有返回值,void也不可
b) 类一定有构造函数,如果没有写,则编译器会自动生成无参的构造函数,无任何操作,一个类中可以有多个构造函数(函数重载)
定义构造函数 如:
Student();//类内
Student::Student(){
}//类外
定义构造函数时可以为参数提供默认值:
Student(String = "LiuMin", int = 19);//类内
Student::Student(String = "LiuMin", int = 19){
}//类外
定义带参数的构造函数:
Student::Student(string name,int age){
strName = name;//赋值语句在函数体中
nAge = age;
}
//除了这种形式之外还可以用函数初始化表的形式对其定义:
Student::Student(string name,int age):strName(name),nAge(age){
}
//这里**不能用等号**,并且不要忘记大括号!!!!!!!!
//定义一个对象时可以这样写:
Student s1("LiuMin",18);//这样即完成了s1的初始化
//用new初始化对象:
Student s1 = Student("LiuMin",18);
Student s1 = Student{
"LiuMin",18};
//调用两个参数的构造函数,这两种方法都是可以的
//注:
//new什么类型就得到什么类型的指针
Student* pStu = new Student("LiuMin",20);//调用两个参数的构造函数,得到的是Student类型的指针,
Student* pStu = new Student;//创建一个对象创建无参的构造函数
//调用时:
pStu->getAge();
//使用完成后记得delete!!!!!!
delete pStu