赞
踩
(1)在C语言中无class关键字
(2)C语言中的struct不能用来定义函数,在C中struct是一种数据类型,所以我们通常使用struct来构建数据结构。
在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不能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。