首页 > 代码库 > C++语言基础(4)-构造函数和析构函数

C++语言基础(4)-构造函数和析构函数

 

一.构造函数的定义

类似于java,C++中也有构造函数的概念,相关用法如下:

1.1 构造函数的定义

#include <iostream>using namespace std;class Student{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;}//定义普通成员函数void Student::show(){    cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;}int main(){    //创建对象时向构造函数传参    Student stu("小明", 15, 92.5f);    stu.show();    //创建对象时向构造函数传参    Student *pstu = new Student("李华", 16, 96);    pstu -> show();    return 0;}

运行结果:

小明的年龄是15,成绩是92.5
李华的年龄是16,成绩是96

1.2 构造函数的重载

构造函数同样也支持重载操作:

#include <iostream>using namespace std;class Student{private:    char *m_name;    int m_age;    float m_score;public:    Student();    Student(char *name, int age, float score);    void setname(char *name);    void setage(int age);    void setscore(float score);    void show();};Student::Student(){    m_name = NULL;    m_age = 0;    m_score = 0.0;}Student::Student(char *name, int age, float score){    m_name = name;    m_age = age;    m_score = score;}void Student::setname(char *name){    m_name = name;}void Student::setage(int age){    m_age = age;}void Student::setscore(float score){    m_score = score;}void Student::show(){    if(m_name == NULL || m_age <= 0){        cout<<"成员变量还未初始化"<<endl;    }else{        cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;    }}int main(){    //调用构造函数 Student(char *, int, float)    Student stu("小明", 15, 92.5f);    stu.show();    //调用构造函数 Student()    Student *pstu = new Student();    pstu -> show();    pstu -> setname("李华");    pstu -> setage(16);    pstu -> setscore(96);    pstu -> show();    return 0;}

运行结果:

小明的年龄是15,成绩是92.5
成员变量还未初始化
李华的年龄是16,成绩是96

1.3 默认构造函数

类似于java,如果用户自己没有定义构造函数,那么编译器会自动生成一个默认的构造函数,只是这个构造函数的函数体是空的。

注意:调用没有参数的构造函数也可以省略括号。

Student *stu  = new Student;

Student *stu = new Student();

以上两种写法是等价的。

 

C++语言基础(4)-构造函数和析构函数