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的主要内容,如果未能解决你的问题,请参考以下文章

struct与class的区别

C++——class类和struct结构体的唯一区别

C++ class struct

10.6 C++类与结构体类型

简述:struct和class的区别

数据结构编程中的struct能完全用class代替吗?