构造函数
class LandOwer {
public:
LandOwer(); /** 默认构造函数 */
~LandOwer(); /** 默认构析函数 */
string name; /** 名称 */
long score; /** 积分 */
int cards[20]; /** 手牌数组 */
void Touchcard(int[]); /** 摸牌 */
bool Playcard(int[]); /** 出牌 */
void Showscore(); /** 查看积分 */
};
不写构造函数也可以,系统会生成一个默认的构造函数,就是LandOwer();没有返回值。也可以写构造函数,在里面加入函数执行体。
LandOwer::LandOwer()
{
//一般使用构造函数来进行成员变量的初始化
name = "地主";
score = 100;
}
带参构造
类名::构造(类型1, 类型2, 类型3,。。。)
{
相关初始化代码
}
Student::Student(string name, string desc)
{
_name = name;
_ddesc = desc;
}
Student* stu = new Student("撒贝宁", "北大还行");
stu->ShowInfo();//指针类型要用 -> 来访问该类里面的函数
文件
main.cpp
#include<iostream>
#include<string>
#include"Student.h"
using namespace std;
int main()
{
//Student stu1;//在栈内存租借分配空间
Student* stu5 = new Student("杰克马","悔创阿里");//在堆内存分配空间
stu5->ShowInfo();
delete stu5;
return 0;
}
Student.h问文件
#pragma once
#include<iostream>
#include<string>
using namespace std;
class Student
{
public://可以写函数和声明
//构造函数的重载类型与普通函数重载相同
Student();
~Student();
Student(string name, string desc);//带参构造
//Student(string name, string desc);//带参构造
//两行一样的就会报错,因为重载两次,重复
Student(int);
void ShowInfo();
string SetName() { return m_Name; }
void SetName(string val) { m_Name = val; }
string Getdesc() { return m_desc; }
void Getdesc(string val) { m_desc = val; }
int Getage() { return m_age; }
void Getage(int val) {
if (val < 0) {
m_age = 18;
}
else m_age = val;
}
private:
string m_Name;
string m_desc;
int m_age;
};
Student::Student()
{
cout << "默认构造" << endl;
}
Student::Student(string name, string desc)
{
SetName(name);//等价于 m_name = name;
m_desc = desc;
cout << "默认带参构造" << endl;
}
Student::Student(int num)
{
Getage(num);//等价于 m_name = name;
cout << "默认带参构造age" << endl;
}
void Student::ShowInfo()
{
cout << m_desc << m_Name << endl;
}
Student::~Student()
{
}
执行主程序,会输出:默认带参构造 \n 悔创阿里杰克马
//等价于
**
Student::Student(string name, string desc)
{
SetName(name);//等价于 m_name = name;
m_desc = desc;
cout << "默认带参构造" << endl;
}
===========================================================
Student::Student(string name, string desc) : m_Name(name), m_desc(desc)//初始化参数列表
{
SetName(name);//等价于 m_name = name;
m_desc = desc;
cout << "默认带参构造" << endl;
}