C++-Record16—类的声明和类的实现分开的问题

我现在定义一个Teacher的类,按要求打印Teacher的信息(把类的声明和类的实现分开,即在之前我们所定义的类,都是把类的实现,都给写在一块儿的,C++编译器会自动的把成员函数做成内联函数,方便运行效率。但是,在企业开发中,大量的类的声明和类的实现是分开的)。

用编译器C++类向导来实现。也可以定义一个.h再定义一个.cpp文件,然后,在里面敲代码。下面演示通过编译器C++类向导来实现的方式:点击项目-》添加-》C++类

C++-Record16—类的声明和类的实现分开的问题_第1张图片

会弹出类向导的界面:

C++-Record16—类的声明和类的实现分开的问题_第2张图片

 再填写"类名"的时候,后面的.h和.cpp会自动的分开并且创建成名称一样的文件。

创建好之后,再分别再文件中填代码,再定义的.h文件中,会出现如下的默认模板。

C++-Record16—类的声明和类的实现分开的问题_第3张图片

 

所定义的.cpp文件是mainclass.cpp,这里边只包含函数的声明,不包含对应的函数实现。

如果在mainclass.cpp里面多次调用"MyTeacher.h":

#include 
using namespace std;
#include "MyTeacher.h"

#include "MyTeacher.h"

#include "MyTeacher.h"

重复调用"MyTeacher.h"。

在"MyTeacher.h"中:其中"#pragma once"表明,不管对应的.cpp文件包含了.h文件几遍,该.h文件只运行一遍。不会报错。如果不加,就会报错。

#pragma once  //只包含一次

 

同理,下面这三行代码的意思,和上一句一样。

#ifndef __MYTEACHER_H_  //ctrl +shift + u 变大写
#define __MYTEACHER_H_



#endif

接下来设计这个类的声明,里面包含成员变量及成员函数的声明:

class MyTeacher
{
private:
	int m_age;
	char m_name[32];

public:

	void setAge(int age);
	int  getAge();

};

可以将里面的成员函数直接写在里面,也可以不写,

最后,需要把写在.h中声明的函数,实现在同名的.cpp文件中:

void MyTeacher::setAge(int age)
{
	m_age = age;
}
int  MyTeacher::getAge()
{
	return m_age;
}

这样就把类的声明和类的实现给分开了!

总体代码

mainclass.cpp

#include 
using namespace std;
#include "MyTeacher.h"

void mainxxx()
{
	MyTeacher t1;
	t1.setAge(36);
	cout<

MyTeacher.cpp

#include "MyTeacher.h"

void MyTeacher::setAge(int age)
{
	m_age = age;
}
int  MyTeacher::getAge()
{
	return m_age;
}

MyTeacher.h

#pragma once  //只包含一次

/*
#ifndef __MYTEACHER_H_  //ctrl +shift + u 变大写
#define __MYTEACHER_H_
*/

class MyTeacher
{
private:
	int m_age;
	char m_name[32];

public:

	void setAge(int age);
	int  getAge();

};

/*
#endif
*/

 

你可能感兴趣的:(C++-Record16—类的声明和类的实现分开的问题)