C++学习Day11——结构体及简单类

Day11

结构体(struct)

结构体(struct)和类(class)的区别

struct和class基本上没有区别,他们唯一的区别:class不指定任何访问修饰符例如public这种,默认就是私有的(private),外部无法直接访问,而struct默认为公共的(public),可以直接访问。


class Player
{
	int x, y;
	int speed;
	void Move( int xa, int ya)
	{
		x += xa * speed;
		y = ya * speed;
	}
};

struct PlayerS
{
	int x, y;
	int speed;
	void Move(int xa, int ya)
	{
		x += xa * speed;
		y = ya * speed;
	}
};

int main(){
	Player player;
	PlayerS players;
	player.Move(1, -1);
	players.Move(1, -1);
	std::cin.get();
}

你进行编译会得到如下错误:
编译错误

如何定义struct和class两个词之间的差别(建议)

c++中还有struct这个关键词是因为为了保持和c的兼容性。struct仅仅是为了用来操作变量,当需要进行复杂例如玩家在地图上如何移动、接受键盘的输入等等这些建议使用类。struct只是为了使我们的代码更易于使用。另外还有一个概念就是继承,从继承的角度来说,对结构体使用继承就增加了复杂性,我们希望结构体尽可能的简单,仅仅是数据的结构体

类(Class)

如何写简单一个类
class Log 
{
public:
	const int LogLevelError = 0;//错误信息
	const int LogLevelWarning = 1;//警告信息
	const int LogLevelInfo = 2;//消息信息
private:
	int m_LogLevel=LogLevelInfo;//m显示的告诉人这个变量是私有的

public:
	void SetLevel(int level)
	{
		m_LogLevel = level;
	}

	void Error(const char* message)
	{
		if(m_LogLevel>=LogLevelError)
			std::cout << "[ERROR]:" << message << std::endl;
	}

	void Warn(const char* message)
	{
		if (m_LogLevel >= LogLevelWarning)
		std::cout << "[WARNING]:" << message << std::endl;
	}

	void Info(const char* message)
	{
		if (m_LogLevel >= LogLevelInfo)
		std::cout << "[INFO]:" << message << std::endl;
	}
};

int main(){
	Log log;
	log.SetLevel(log.LogLevelWarning);
	log.Warn("Hello!");
	std::cin.get();
}

我们编译后就是:
编译后
在加上下面这些

int main(){
	Log log;
	log.SetLevel(log.LogLevelWarning);
	log.Warn("Hello!");
	log.Error("Hello!");
	log.Info("Hello!");
	std::cin.get();
}

结果为:
结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值