栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

struct和class

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

struct和class

1.C中的struct和class

(1)在C语言中无class关键字

(2)C语言中的struct不能用来定义函数,在C中struct是一种数据类型,所以我们通常使用struct来构建数据结构。

2.C++中的struct和class

在C++中引入struct是为了保持对C程序的兼容,在引入之后C++对其进行了扩充,现在struct也可以拥有静态成员、成员数据,可进行初始化、拥有函数、也可以继承、甚至多态也支持。

(1)默认访问权限不同。struct和class都可以添加private/public修饰符,但是如果没有显式添加,struct默认的访问权限为public,而class的默认访问权限是private。如下:

struct A
{
	int x;
}

class B
{
	int x;
}

A a;
a.x= 1;		//没有问题,因为struct默认访问属性为public

B b;
b.x= 1;		//编译出错,因为class默认访问属性为private

(2)默认继承权限不同。C++中struct和class都是可以继承的,struct默认的继承权限是public,而class的默认继承权限是private。如下:

struct A
{
	int x;
}
struct B : A
{
	int x;
}

B b;
b.x = 1;	//正确的, 因为struct默认的继承权限是public


class A
{
	int x;
}
class B : A
{
	int x;
}

B b;
b.x = 1;	//错误的, 因为class默认的继承权限是private

另外,struct可以继承class,同样class也可以继承struct,默认的继承访问权限是看子类到底是用的struct还是class。如下:

struct A{};
class B : A {};	//默认为private继承
struct C : B{};	//默认为public继承

(3)使用大括号赋值时的区别。struct如果没有定义构造函数,可以使用大括号对struct的数据成员进行赋值,但是如果struct中定义了一个构造函数,则不能使用大括号进行赋值了。class只有在成员变量全部是public的情况下,才能使用大括号进行赋值。

(4)在C++中,class这个关键字可以用于定义模板参数,就像typename,而struct不能。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/957863.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号