struct与class的区别

原创 2015年07月09日 10:20:01

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


版权声明:本文为博主原创文章,未经博主允许不得转载。

C++中struct和class的区别

一、  C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。     struct能包含成员函数吗?   能! ...

C++中struct和class的区别

一、  C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。     struct能包含成员函数吗?   能! ...
  • xdrt81y
  • xdrt81y
  • 2013年12月05日 16:39
  • 25931

C++中struct和class的区别

有很多人在学习C++的时候只是了解了C++的语法,或者更高层次的人是理解了oo,但在这样的学习过程中,往往一些最基本的问题反而被忽略了。当然,这些问题或许在你做工程中,不会有太大的影响,只要按照平时一...

C++中class和struct的区别

很多初学者或者是想当然,或者是被网上的一些错误信息给误导,面试中问到class和struct区别时经常会说class可以继承而struct不可以继承,这是完全错误的。但在C#中,class与struc...

Baidu struct 与类 class 的区别? 【面】

这是我遇到过的一道百度面试题目 : 当时一愣没有答出来!所以现在回来查了一下!以下内容为 : 转载 讨论一下结构(struct)与类(class)的区别,你认为结构(struct)有些什么作...
  • aclay
  • aclay
  • 2012年09月25日 23:04
  • 308

.NET中struct与class的区别

在.net中的struct与class有很多相似之处,比如可以直接new,对于成员可以直接XX.field,以至于有不少程序员在用时,将其混在一起,分不清有何区别。这两者有何区别呢? 1.类型不同 ...

struct和class的区别

转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.html C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不...

class与struct的区别

一、默认成员的权限区别 struct默认的成员权限是public,而class的默认成员权限是private。 二、默认继承方式 同样的,struct默认的是pu...

[C\C++]基本问题1——C++中struct和class的区别

转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.html C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据...

Struct 和 Class 的区别

Struct 和 Class 的区别 其...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struct与class的区别
举报原因:
原因补充:

(最多只允许输入30个字)