标签:年龄 自己 支持 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();
以上两种写法是等价的。
标签:年龄 自己 支持 public 初始化 cout 语言 传参 float
原文地址:http://www.cnblogs.com/yongdaimi/p/7054881.html