码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-06-20 18:09:30      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:年龄   自己   支持   public   初始化   cout   语言   传参   float   

 

一.构造函数的定义

类似于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)-构造函数和析构函数

标签:年龄   自己   支持   public   初始化   cout   语言   传参   float   

原文地址:http://www.cnblogs.com/yongdaimi/p/7054881.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!