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不能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值