赞
踩
在c++中,struct与class的区别其实不算特别大,两个关键词的用法在很多地方有相似之处。那为什么在c++中会有struct这个关键字呢?
先说结论:
主要原因是c++需要保留对c的兼容性,c中有struct,所以c++也保留。不光struct,很多其他地方也都是为了保留对c的兼容。
在c语言中,struct 只能包含成员变量,不能包含成员函数。所以在c语言中,struct中不能包括任何函数,否则编译器会报错,编译无法通过。
c是一种面向过程的编程思路,面向过程认为数据与计算是分开的,struct关键字就是上述理念的体现。
c语言中struct定义例子
struct A
{
char c;
int n;
int m;
... // 其他成员变量
c++中保留了c语言中的 struct 关键字,这样可以让c++编译器兼容以前用c语言写的代码,并正常编译运行。
相比c语言中的struct关键词,c++中的struct功能强大了很多:
1.最重要一点区别,c++中struct可以定义成员函数。
2.struct可以被继承。
3.struct还可以实现多态。
先看一个实例,
struct person {
char name[30];
int age;
float heigth;
};
void func() {
person p = {"lili", 18, 1.65};
cout<<"name is: "<<p.name<<", age is: "<<p.age<<", heigth is: "<<p.heigth<<endl;
}
int main(int argc, char const *argv[])
{
func();
return 0;
}
我们自己定义的struct结构体变量,可以通过成员运算户号.
来访问各个成员。
另外,结构在哪里声明也很重要,因为涉及到变量的作用域问题。struct声明可以放在函数中,也可以放在main方法前面。如果放在函数中,则是内部声明,只能被该函数使用。而在main方法之前声明,则可以被后面所有函数使用。
结构体初始化的时候,用逗号将所有成员值分开,并且将所有成员变量用大括号括起来,就完成了结构体的初始化。
1.继承权限:struct默认为public,而class默认的为private。
2.访问权限:struct默认的成员变量访问控制权限是public,而class默认的成员变量访问权限则为private。
3.class可以用于定于template,struct不能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。