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


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yangyan518/article/details/46813305

明晰class和struct之间的区别

class与struct c++最初被称为“c with class”,足见class在c++中的地位。在c++中我们可以用class自定义用户数据类型,然而它还存在一个类似的——struct,他们...
  • wangpengcsdn1
  • wangpengcsdn1
  • 2017年03月31日 21:15
  • 4770

C/C++的class和struct的区别

转载来源:http://blog.csdn.net/yangzhiloveyou/article/details/8536793 这里有两种情况下的区别。 (1)C的struct与C++的clas...
  • u010575592
  • u010575592
  • 2016年08月10日 21:50
  • 1634

Struct和Class的区别

转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.html C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数...
  • yuliu0552
  • yuliu0552
  • 2011年08月25日 12:40
  • 98852

struct与class的区别

struct与class的区别可以分以下两个方面来讨论: 一、C语言中的struct与C++中class的区别: struct只是作为一种数据类型定义,不能用于面向对象编程。对于如下C语言片段: ...
  • Yangyan518
  • Yangyan518
  • 2015年07月09日 10:20
  • 253

golang技术随笔(一)深入理解interface

Go语言的主要设计者之一罗布·派克( Rob Pike)曾经说过,如果只能选择一个Go语言的特 性移植到其他语言中,他会选择接口。可见接口在golang中的地位,及其对gloang这门语言所带来的活力...
  • justaipanda
  • justaipanda
  • 2015年01月26日 19:13
  • 25464

class与struct 区别

首先,我们从struct关键字在C和C++中的区别说开去。在C的编译器中,代码 struct label { /*stuff*/ }; 只是定义了一个结构体标签label。要想在...
  • huaxi1902
  • huaxi1902
  • 2014年05月10日 21:56
  • 667

Struct结构和Class类的区别

转自博客园Dooroo 1,定义和使用非常相似,例子如下: public struct Student {     string Name;     int Age; } public class ...
  • boyeer
  • boyeer
  • 2016年11月23日 20:29
  • 381

golang 内置函数new() 和struct{} 初始化的区别

new() 这是一个用来分配内存的内置函数,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配的 t 类型的零值的指针。在golang的代码定义如下:func new(t Type) ...
  • happinessaflower
  • happinessaflower
  • 2015年03月26日 22:45
  • 1440

GO的struct与C的struct区别

1、struct的声明 GO中:type student struct { Name string Age int }C中#include typedef struct Stu...
  • qq_17263269
  • qq_17263269
  • 2016年12月22日 11:34
  • 245

Swift中结构体(Struct)和类(Class)的区别

原文地址为http://www.tuicool.com/articles/EveeEf Hi, There。今天這個篇文章要來介紹 Swift 中 struct 和 class 有什麼不一樣的地...
  • see_you_in_the_past
  • see_you_in_the_past
  • 2015年03月26日 17:54
  • 6100
收藏助手
不良信息举报
您举报文章:struct与class的区别
举报原因:
原因补充:

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