C++ 构造函数

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

C++ 构造函数

xiaobaizzZ   2020-02-22 我要评论

构造函数

构造函数:是一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户显式调用,而是在创建对象时自动执行。

#include<iostream>
#include<string>
using namespace std;

class Student{
private:
    string m_name;
    int m_age;
    float m_score;
public:
    //声明构造函数
    Student(string name, int age, float score);
    //声明普通成员函数 
    void show();
};
//定义构造函数 
Student::Student(string 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.5);
    stu.show();
    
    Student *pstu = new Student("小花", 16, 98);
    pstu -> show();
    
    return 0;
}
/*运行结果*/
小明的年龄是15,成绩是92.5
小花的年龄是16,成绩是98

构造函数必须是public属性的,否则创建对象时无法调用。并且构造函数没有返回值。

构造函数的重载

一个类可以有多个重载的构造函数,创建对象时根据传递的实参来判断调用哪一个构造函数。

构造函数的调用是强制性的,创建对象时只有一个构造函数会被调用。

#include<iostream>
#include<string>
using namespace std;

class Student{
private:
    string m_name;
    int m_age;
    float m_score;
public:
    //声明构造函数
    Student();
    Student(string name, int age, float score);
    //声明普通成员函数 
    void show();
};
//定义构造函数 
Student::Student()
{
    m_name = "";
    m_age = 0;
    m_score = 0.0;
}
Student::Student(string 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.5);
    stu.show();
    
    Student *pstu = new Student();
    pstu -> show();
    
    return 0;
}
/*运行结果*/
小明的年龄是15,成绩是92.5
的年龄是0,成绩是0

默认构造函数

如果用户自己没有定义构造函数,那么编译器会自动生成一个默认的构造函数。这个构造函数没有形参,也不执行任何操作。

一个类必须有构造函数,要么用户自己定义,要么编译器自动生成。

构造函数初始化列表

构造函数初始化列表并没有效率上的优势,仅仅是书写方便。

对象在栈上分配内存,成员变量的初始值是不确定的。

#include<iostream>
#include<string>
using namespace std;

class Student{
private:
    string m_name;
    int m_age;
    float m_score;
public:
    //声明构造函数
    Student(string name, int age, float score);
    //声明普通成员函数 
    void show();
};
//采用初始化列表 
Student::Student(string 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.5);
    stu.show();
    
    return 0;
}

初始化const成员变量

初始化const成员变量的唯一方法就是使用初始化列表。

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们