zoukankan      html  css  js  c++  java
  • 类中的静态变量以及类与结构体的区别

    1. 静态变量

    今天总算弄了一点点贴图的程序了,想用顶点数组的方法来试试。记得前天晚上,做的一个试验不能跑出结果,今天才发现原来必须要用静态的类型呀,对这个方法的原理不了解导致的额。先说说关于静态变量这回事吧。

    一开始,我想这样:

    class NODE
    {
    public:
        static int a;
    };
    int main()
    {
        NODE::a;
    }

    但这样会报链接错误:error LNK2001: 无法解析的外部符号 "public: static int NODE::a" (?a@NODE@@2HA)

    那是因为静态变量必须要初始化,常量直接初始化就可以,变量需要这样初始化:

    class NODE
    {
    public:
        static int a;
    };
    int NODE::a = 1;

    尽管顶点数组的方法可以跑了,但是又有问题了,要是这样的话,那顶点数组都是放在静态全局区的(全局/静态存储区,全局变量和静态变量被分配到同一块内存中),也就是同一个类数据类型,共享一片数据区的,而我的程序中对于对象都希望有这样的顶点数组来快速调用的,看来又得想想别的办法了。

    2. 类与结构体的区别

    在CSDN上看到这样的帖子,又查了点东西,对这有了点了解,如下:

    我们说的类与结构体的区别,一般指的是C++中的类与结构体的区别,要是说C中的结构体与C++中类的区别,那就大了,有C没有C++的时候,就没有面向对象的思想与机制,结构体不过是一个自定义的数据类型,把不同类型的数据放在了一起,没有继承、构造什么的,因此这两者是有很大的不同的。

    常问的指的是C++中类与结构体的不同,C++中的结构体考虑的是向下兼容,兼容C中的结构体的作用,和C++的类不同体现在下面两点,除此之外,暂懂这些的就不好意思多说了。

    1. struct中的数据默认是public,而c++是private
    2. struct中默认的继承方式是public,而c++是private
  • 相关阅读:
    UVA756
    SP30906
    SP32900
    CF940F
    洛谷P5030
    洛谷P5142
    洛谷P2569
    网络流 24 题做题记录
    矩阵
    二分图
  • 原文地址:https://www.cnblogs.com/litstrong/p/1926558.html
Copyright © 2011-2022 走看看