c++ struct与class
Posted bitcarmanlee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ struct与class相关的知识,希望对你有一定的参考价值。
1.开篇
在c++中,struct与class的区别其实不算特别大,两个关键词的用法在很多地方有相似之处。那为什么在c++中会有struct这个关键字呢?
先说结论:
主要原因是c++需要保留对c的兼容性,c中有struct,所以c++也保留。不光struct,很多其他地方也都是为了保留对c的兼容。
2.c中的struct
在c语言中,struct 只能包含成员变量,不能包含成员函数。所以在c语言中,struct中不能包括任何函数,否则编译器会报错,编译无法通过。
c是一种面向过程的编程思路,面向过程认为数据与计算是分开的,struct关键字就是上述理念的体现。
c语言中struct定义例子
struct A
char c;
int n;
int m;
... // 其他成员变量
3.c++中的struct
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方法之前声明,则可以被后面所有函数使用。
结构体初始化的时候,用逗号将所有成员值分开,并且将所有成员变量用大括号括起来,就完成了结构体的初始化。
4.struct与class的区别
1.继承权限:struct默认为public,而class默认的为private。
2.访问权限:struct默认的成员变量访问控制权限是public,而class默认的成员变量访问权限则为private。
3.class可以用于定于template,struct不能。
以上是关于c++ struct与class的主要内容,如果未能解决你的问题,请参考以下文章