我现在明白为什么静态类不创建对象也可以用了,因为你不管创建不创建,它的值都是定的。
也让我想起java老师讲到抽象类和实例无关,所以不需要实例化。
这里也应该是,这里这个量的值就是定的,和对象无关,不管创建不创建对象这个值都是定的。静态类就是不能被改变的嘛。
所以现在明白为什么静态类不需要创建对象直接用类名调用类成员了!!!!!!清楚了这个本质就理解了,不用死记了!!!!!清楚这个本质之后就可以灵活使用了。
确实跟具体实例没什么关系所以不需要实例化,
而有些类是需要实例化的,比如类里面的变量是名字,学号,这种就肯定得实例化对不对,实例化的时候给它赋上具体的值,所以需要构造函数啊!!!!!这个时候很多东西一下子就明白了!!!!!!!
而且这种不创建对象用类名引用的时候就是用的双冒号。
我推测一下,是不是类里面常量的引用都可以这么做。
这也是ROS里面的msg文件里面的量都已经赋值好了给我的启发。(后来确定那是编译后自动变为枚举类型,类里面的枚举类型就是静态成员变量)
那些创建对象才用的消息类型里面的变量应该是没有赋值的!!!!!!!!!!!!
或者就是,用里面已经赋值的量,可以直接用不用创建对象,用里面没有赋值的量需要创建对象!!!!!!就可以回答我下面这个问题,类里面的变量为什么不需要创建对象再去引用呢。
**这些普罗米修斯C++代码里面的双冒号::到底代表着什么,有必要真正弄清楚了(基本是命名空间)很多彻底弄清楚了!_c++中的两个冒号是什么-CSDN博客
比如这个
https://gitee.com/maxibooksiyi/Prometheus/blob/master/Modules/control/src/px4_sender.cpp
其实下面这种我创建对象引用应该也没什么问题,只是可能多此一举。因为它确实跟具体实例没什么关系,所以不需要实例化。
https://gitee.com/maxibooksiyi/Prometheus/blob/master/Modules/common/msgs/msg/DroneState.msg
https://gitee.com/maxibooksiyi/Prometheus/blob/master/Modules/common/msgs/msg/ControlCommand.msg
这个通过对象调用的armed确实就是一个没有赋值的量
https://gitee.com/maxibooksiyi/Prometheus/blob/master/Modules/control/src/px4_sender.cpp
可以在不建立对象的情况下调用类成员吗?可以不建立对象的情况下调用类方法吗?_没有对象就没有非静态成员变量-CSDN博客
C++ static静态成员变量用法_c++定义一个私有静态变量-CSDN博客
拍自《C++ primer》
opencv里面这三个方法是静态方法现在应该好理解啊,因为它确实跟具体对象没有关系。人家设定静态方法这样的规则是有道理的。
。