关闭

struct与class的区别

154人阅读 评论(0) 收藏 举报
分类:

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;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:32942次
    • 积分:1180
    • 等级:
    • 排名:千里之外
    • 原创:87篇
    • 转载:21篇
    • 译文:0篇
    • 评论:0条