189 8069 5689

C++——类的引入和定义-创新互联

一、类的引入
struct student
{char name[20];
	int age;

};

上面一段代码是在C语言中结构体的定义,我们知道在C语言中的结构体只能定义变量,但是可不可以在结构体中定义函数呢?
答案是在C语言中不可以,但是在C++中可以,在C++中,结构体不仅可以定义变量我,也可以定义函数。
举个例子:

成都创新互联主营绥中网站建设的网络公司,主营网站建设方案,手机APP定制开发,绥中h5微信小程序开发搭建,绥中网站营销推广欢迎绥中等地区企业咨询

在C语言中实现栈:

Stack.h

typedef int STDataType;
#define N 10
typedef struct Stack
{STDataType _a[N];
int _top; // 栈顶
}Stack;
// 支持动态增长的栈
typedef int STDataType;
typedef struct Stack
{STDataType* _a;
int _top; // 栈顶
int _capacity; // 容量
}Stack;

// 初始化栈
void StackInit(Stack* ps);
// 入栈
void StackPush(Stack* ps, STDataType data);
// 出栈
void StackPop(Stack* ps);
// 获取栈顶元素
STDataType StackTop(Stack* ps);
// 获取栈中有效元素个数
int StackSize(Stack* ps);
// 检测栈是否为空,如果为空返回非零结果,如果不为空返回0
int StackEmpty(Stack* ps);
// 销毁栈
void StackDestroy(Stack* ps);

Stack.c

// 初始化栈
void StackInit(Stack* ps)
{//....
}
// 入栈
void StackPush(Stack* ps, STDataType data)
{//....
}
// 出栈
void StackPop(Stack* ps)
{//....
}
// 获取栈顶元素
STDataType StackTop(Stack* ps)
{//....
}
// 获取栈中有效元素个数
int StackSize(Stack* ps)
{//....
}
// 检测栈是否为空,如果为空返回非零结果,如果不为空返回0
int StackEmpty(Stack* ps)
{//....
}
// 销毁栈
void StackDestroy(Stack* ps)
{//....
}

main.c

Stack s;
StackInit(&s);
StackPush(&s,1);
StackPush(&s,2);
StackPush(&s,3);
//....

在C++中实现栈

```cpp
#includeusing namespace std;

typedef int DataType;
struct Stack
{void Init(size_t capacity)
	{_array = (DataType*)malloc(sizeof(DataType) * capacity);
		//空间检查
		if (nullptr==_array)
		{	perror("malloc申请空间失败");
			return;
		}
		_capacity = capacity;    //更新空间容量
		_size = 0;               //将元素个数置为0
	}

	//元素入栈
	void Push(const DataType& data)
	{//扩容
		_array[_size] = data;
		++_size;
	}

	//栈顶元素
	DataType Top()
	{return _array[_size - 1];
	}

	//栈的销毁
	void Destory()
	{if (_array)
		{	free(_array);  //释放空间
			_array = nullptr; //栈顶地址置为空指针
			_capacity = 0;
			_size = 0;
		}
	}

	DataType* _array;   //栈的地址
	size_t _capacity;   //栈的空间大小
	size_t _size;       //栈的元素的个数
};
int main()
{Stack s;
	s.Init(10);
	s.Push(1);
	s.Push(2);
	s.Push(3);
	s.Destory();

	return 0;
}

在C++中,结构体的定义更偏向于用class来代替struct。

二、类的定义

类定义的一般形式:

class classname
{//成员函数+成员变量=类体
};//注意这里的分号不能省略

class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。
类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。

类的两种定义方式:

1、声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。

//声明和定义全放在类体中

class person
{public:
	
	//个人基本信息
	void showinfo()
	{cout<< _name<< "-"<< _sex<< "-"<< _age<< endl;
	}

private:
	char* _name;  //姓名
	char* _sex;   //性别
	int   _age;   //年龄

};

2、类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名。

person.h

class person
{public:
	//显示个人信息
	void showInfo();
private:
	char* _name;  //姓名
	char* _sex;   //性别
	int   _age;   //年龄
};

peson.cpp

#include"person.h"  //头文件的引用

void person::showInfo()      //成员函数前需要用加类名和域限定符
{cout<< _name<< "-"<< _sex<< "-"<< _age<< endl;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:C++——类的引入和定义-创新互联
转载来于:http://cdxtjz.cn/article/hojeh.html

其他资讯