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。

  • 相关阅读:
    IE兼容问题,各类css hack代码(亲测有效)
    javascript进阶系列专题:闭包(Closure)
    javascript进阶系列专题:作用域与作用域链
    github文件上传及github pages博客搭建教程
    javascript算法
    【CSS3】标签使用说明
    【html5】常见标签使用说明(持续更新)
    通过一行代码学习javascript
    Object.create()兼容实现方法
    oracle查询锁表解锁语句 (转)
  • 原文地址:https://www.cnblogs.com/yaowen/p/4778624.html
Copyright © 2011-2022 走看看