预见构造函数

时间:2021-06-20 19:29:34

构造函数的作用:对一个类的对象进行初始化。
构造函数的名字:与类名相同。
构造函数的特点:不具有任何类型,不返回任何值。在创建类的对象的时候系统会自动调用构造函数,如果用户没有定义构造函数,系统会自定义一个什么都不做的构造函数。只能执行一次,一般声明为public。

用构造函数实现数据成员的初始化。(不带类型的构造函数)

stu.h:

#ifndef STU_H
#define STU_H
#include <cstdio>
#include <iostream>
using namespace std;

class stu
{
private:
int data;
public:
stu(); //构造函数名与类名相同
void display();
};

#endif

stu.cpp:

#include "stu.h"
#include <cstdio>
#include <iostream>
using namespace std;

stu::stu() //类名 + 域限定符
{
data = 100; //初始化 data = 10;
}

void stu::display() //成员函数 display
{
cout << data << endl;
}

main.cpp

#include "stu.h"
#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
stu stu1;
stu1.display();

return 0;
}

用构造函数实现数据成员的初始化。(带类型的构造函数)

a.h:

#ifndef A_H
#define A_H

class A
{
private:
int data;
public:
A(int pla); //带形参
void display();
//protected:
};

#endif // A_H

a.cpp:

#include "a.h" // class's header file
#include <iostream>
using namespace std;

A::A(int pla)
{
data = pla;
}

void A::display()
{
cout << data << endl;
}

main.cpp:

#include "a.h" // class's header file
#include <iostream>
#include <cstdio>
#include <stdlib.h>
using namespace std;

int main()
{
A a1(100); //初始化的时候后面加括号
a1.display();

return 0;
}

用函数初始化列表对数据成员进行初始化

p.h:

#ifndef P_H
#define P_H
#include <iostream>
#include <string>
using namespace std;

class P
{
private:
int data;
int norm;
string num;
public:
P(int d,int n1,string n2):data(d),norm(n1),num(n2){}; //初始化列表
void display();
};

#endif // P_H

p.cpp:

#include "p.h" // class's header file
#include <iostream>
using namespace std;

void P::display()
{
cout << norm << " " << num << " " << data << endl;
cout << "数计必胜" << endl;
}

main.cpp:

#include "p.h"
#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
P p1(90,610,"031502209"); //定义对象时把所需要赋的初值表示出来
p1.display();

return 0;
}

预见构造函数

注:如果private内有数组的话,不能使用初始化列表,得在构造函数的函数体中用操作语句对其进行声明。

class P
{
private:
char s[105];
int a;
public:
P(int pla,char s1[]):a(pla)
{strcpy(s,s1);}
void display();
};