C语言Plus 2020-05-01
前言
类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。
有些教程将类的成员变量称为类的属性(Property),将类的成员函数称为类的方法(Method)。在面向对象的编程语言中,经常把函数(Function)称为方法(Method)。
与结构体一样,类只是一种复杂数据类型的声明,不占用内存空间。而对象是类这种数据类型的一个变量,或者说是通过类这种数据类型创建出来的一份实实在在的数据,所以占用内存空间。
类的定义
类和C语言里的结构体唯一不同的就是,类里面除了可以写变量之外还可以,可以写函数。咱们通过代码来了解一下:
#include<iostream>
using namespace std;
struct TestC //C语言结构体
{
int age;
char name[15];
};
void InitC(struct TestC *temp,int fage, const char *fname)
{//在函数里面改变变量的值,需要传入指针哦
temp->age = fage;
strcpy(temp->name, fname);
}
void ShowInfo(struct TestC temp)
{
printf("我是%s,今年%d岁了~\n", temp.name,temp.age);
}
struct TestCPP //C++类
{
int age;
char name[15];
void InitCpp(int fage,const char *fname)
{
age = fage;
strcpy(name, fname);
}
void ShowInfo()
{
cout << "我是" << name << "今年" << age << "岁了~" << endl;
}
};
int main()
{
struct TestC *Tc=(struct TestC*)malloc(sizeof(struct TestC));
InitC(Tc, 23, "maye");
ShowInfo(*Tc);
TestCPP TCPP;
TCPP.InitCpp(18, "C语言Plus");
TCPP.ShowInfo();
while (1);
return 0;
}
可以看到C语言定义好了结构体,如果想写一个函数对里面的所有数据进行初始化,那么你就得在下面写一个函数,还要指定初始化的结构体变量。
那么在C++里我们可以把这个初始化数据的函数放到结构体里面(一般叫类),调用函数的方式和结构体使用成员的方式一样。很好理解吧!
在C++里,除了使用struct关键字定义类外,还新增了class关键字,专门用来定义类,直接把struct替换为class就可以了。
TestCPP是类的名称;类名的首字母一般大写,以和其他的标识符区分开。{ }
内部是类所包含的成员变量和成员函数,它们统称为类的成员(Member);由{ }
包围起来的部分有时也称为类体,和函数体的概念类似。
类的成员类型
类成员可以被定义为 public(公有)、private(私有) 或 protected(保护)。默认情况下是定义为 private。
什么意思呢?还是通过代码来了解,俗话说得好,实践是检验真理的唯一标准!
#include<iostream>
using namespace std;
struct Student //C++类
{
private:
int age;
protected:
char name[15];
public:
int score;
void init()
{
age = 18;
strcpy(name, "C语言Plus");
score = 88;
}
};
int main()
{
Student stu;
stu.init();
stu.age;
stu.name;
stu.score;
while (1);
return 0;
}
可以看到除了public成员,其他两种在类的外面是没有办法访问的,这就是这个作用,具体的咱们在后面详细了解。