在C++中,有一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户显式调用(用户也不能调用),而是在创建对象时自动执行。这种特殊的成员函数就是构造函数(Constructor)。
#include<iostream>
usingnamespace std;
classStudent
{
private:
char *m_name;
int m_age;
float m_score;
public:
//声明构造函数
Student(char *name, int age, float score);
//声明普通成员函数
void show();
};
//定义构造函数
Student::Student(char*name, int age, float score)
{m_name= name; m_age = age; m_score = score;}
//定义普通成员函数
voidStudent::show(){
cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;
}
intmain()
{
//创建对象时向构造函数传参
Student stu("水仙花",15, 92.5f);
stu.show();
//创建对象时向构造函数传参
Student *pstu = new Student("丁香花",16, 96);
pstu -> show();
return 0;
}
i. 该例在 Student 类中定义了一个构造函数Student(char *, int, float),它的作用是给三个 private属性的成员变量赋值。要想调用该构造函数,就得在创建对象的同时传递实参,并且实参由( )包围,和普通的函数调用非常类似。
ii. 构造函数必须是public 属性的,否则创建对象时无法调用。当然,设置为 private、protected 属性也不会报错,但是没有意义。
iii. 构造函数没有返回值,因为没有变量来接收返回值,即使有也毫无用处,这意味着:
a) 不管是声明还是定义,函数名前面都不能出现返回值类型,即使是 void 也不允许;
b) 函数体中不能有return 语句。