zoukankan      html  css  js  c++  java
  • C++ 结构体和类的区别

    C/C++结构体的区别 
    C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。
    C++中的结构体和类的异同:
    一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象。但C中的结构体不允许有函数;
    也就是说在C++当中,结构体中可以有成员变量,可以有成员函数,可以从别的类继承,也可以被别的类继承,可以有虚函数。
    二、不同之处:结构体定义中默认情况下的成员是public,而类定义中的默认情况下的成员是private的。类中的非static成员函数有this指针,(而struct中没有是错误的,一直被误导啊,经过测试struct的成员函数一样具有this指针),类的关键字class能作为template模板的关键字 即template<class T> class A{}; 而struct不可以。
    实际上,C中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的,而到C++中一类或者一个结构体可以包含函数(这个函数在C++我们通常中称为成员函数),C++中的结构体和类体现了数据结构和算法的结合。

    1.C的结构体和C++结构体的区别

       1.1 C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。所以C的结构体是没有构造函数、析构函数、和this指针的。

       1.2 C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。

       1.3 C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。

       以上都是表面的区别,实际区别就是面向过程面向对象编程思路的区别:

           C的结构体只是把数据变量给包裹起来了,并不涉及算法。

           而C++是把数据变量及对这些数据变量的相关算法给封装起来,并且给对这些数据和类不同的访问权限。

       C语言中是没有类的概念的,但是C语言可以通过结构体内创建函数指针实现面向对象思想。

    2.C++的结构体和C++类的区别

       2.1 C++结构体内部成员变量及成员函数默认的访问级别是public,而c++类的内部成员变量及成员函数的默认访问级别是private。

       2.2 C++结构体的继承默认是public,而c++类的继承默认是private。

    参考网址:

    C++ 结构体和类的区别

  • 相关阅读:
    2017蓝桥杯最大公共子串(C++B组)
    C++ memset函数用法
    2017蓝桥杯取位数(C++B组)
    2017蓝桥杯承压计算(C++ B组)
    安卓动画(Animation使用)
    2017蓝桥杯等差素数(C++B组)
    JSON取值前判断
    jstl
    centos到底下载哪个版本?
    HTML页面定时跳转方法
  • 原文地址:https://www.cnblogs.com/2018shawn/p/14035490.html
Copyright © 2011-2022 走看看