类中的静态变量以及类与结构体的区别

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
    原文链接: https://www.cnblogs.com/litstrong/archive/2011/01/05/1926558.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/19687

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午8:59
下一篇 2023年2月7日 下午9:00

相关推荐