当前位置:   article > 正文

c++ struct与class_c++ struct和class的区别

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;
	... // 其他成员变量
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

我们自己定义的struct结构体变量,可以通过成员运算户号.来访问各个成员。
另外,结构在哪里声明也很重要,因为涉及到变量的作用域问题。struct声明可以放在函数中,也可以放在main方法前面。如果放在函数中,则是内部声明,只能被该函数使用。而在main方法之前声明,则可以被后面所有函数使用。

结构体初始化的时候,用逗号将所有成员值分开,并且将所有成员变量用大括号括起来,就完成了结构体的初始化。

4.struct与class的区别

1.继承权限:struct默认为public,而class默认的为private。
2.访问权限:struct默认的成员变量访问控制权限是public,而class默认的成员变量访问权限则为private。
3.class可以用于定于template,struct不能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/714723
推荐阅读
相关标签
  

闽ICP备14008679号