首页 > 代码库 > 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)-构造函数和析构函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。