struct与class的区别

struct与class的区别可以分以下两个方面来讨论:

一、C语言中的struct与C++中class的区别:

struct只是作为一种数据类型定义,不能用于面向对象编程。对于如下C语言片段:

struct Point
{
	int x;
	int y;
	void print()
	{
		printf("Point.\n");//编译错误“函数不能作为Point结构的成员”
	}
};

二、C++中的struct与C++中class的区别:

对于成员访问权限及继承方式,class中默认的是private,而struct中默认的是public。除此之外,class还可以用于表示摸板类型,struct则不行。

class访问权限 默认private,struct默认public

struct SPoint
{
	int x;
	int y;
	void print()
	{
		cout<<"Point public."<<endl;
	}
	SPoint(int x, int y)
	{
		this->x = x;
		this->y = y;
	}
private:
	void print1()
	{
		cout << "Point Private." << endl;
	}
};

class CPoint
{
	int x;
	int y;
	void print()
	{
		cout << "Point public." << endl;
	}
	
public:
	CPoint(int x, int y)
	{
		this->x = x;
		this->y = y;
	}
	~CPoint(){}
	void print1()
	{
		cout << "Point Private." << endl;
	}
};
int main()
{
	SPoint Sp(2,3);
	CPoint Cp(2,3);
	Sp.print();
	Sp.print1();//函数不可访问
	Cp.print();//函数不可访问
	Cp.print1();
	system("pause");
	return 0;
}

class继承默认private,struct继承默认public

struct base
{
	void print()
	{
		cout << "SBase:print()" << endl;
	}
};

class Cderivate1 :base
{
	void CDprint()
	{
		cout << "Cderivate1:print()";
	}
};

struct Sderivate1 :base
{
	void SDprint()
	{
		cout << "Sderivate1:print()";
	}
};

class Cderivate2 :public base
{
	void CDprint()
	{
		cout << "Cderivate2:print()";
	}
};

struct Sderivate2 : private base
{
	void SDprint()
	{
		cout << "Sderivate2:print()";
	}
};

int main()
{
	Cderivate1 cd1;
	Cderivate2 cd2;
	Sderivate1 sd1;
	Sderivate2 sd2;

	cd1.print();//函数不可访问
	cd2.print();
	sd1.print();
	sd2.print();//函数不可访问
	system("pause");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值