正常函数(而不是静态函数)是否只有一个C++类的副本,这意味着所有对象都指向同一副本。如果是这样,正常功能和静态功能有什么区别。另外,我的老师说我们不能使用“(object_name)。(func_name)”表示法调用类的静态函数,但必须使用“class_name::(func_name)”调用它,而我明白这是逻辑要做的事情,但就语言而言,我不允许使用(object_name)。(func_name)符号来调用静态函数吗?最后,我不能在类的构造函数或该类的任何其他函数内初始化类的静态数据成员,但必须从类外部进行初始化?C++类的函数对于所有对象只有一个副本吗?
-3
A
回答
4
如果只有一个副本,表示所有功能在内存中具有相同的位置,那么是的,您是对的。区别在于静态函数不需要为了被调用而实例化对象。这也意味着你不能访问该类的其他非静态成员。
至于初始化,你不能在构造函数中完成它,因为调用一个可以访问静态成员的静态函数将需要事先调用构造函数。没有办法保证。你可以改变构造函数中的静态,但它必须在别处初始化。
想想这样的场景:
class A
{
static int x;
public:
A()
{
x = 3;
}
static int getX()
{
return x;
}
}
int main()
{
A::getX(); //what would x be here? It hasn't been initialized since A() was not called.
}
至于调用函数(对象)(功能),而不是(类)::(功能),我相信你被允许这样做,但你为什么?
相关问题
- 1. 是否只有一个事件处理程序的所有对象的副本
- 2. 方法对于eact对象有不同的副本吗?
- 3. 有一个对象的副本而不是一个锁定的对象
- 4. Rails:fields_for只有一个对象
- 5. 对一个对象的所有引用
- 6. C#将所有对象参数复制到子类对象
- 7. 类对象的所有权目标c
- 8. 如何制作一个没有参考的对象的副本?
- 9. 获取Hazelcast EntryExpiredListener只有一个节点(不是所有副本)
- 10. 删除核心数据中的对象(类似对象/副本)
- 11. Objective-C中的所有对象基本都是指针吗?
- 12. 列出某个类的所有对象
- 13. 制作另一个对象内的对象的副本。 JAVASCRIPT
- 14. 列出所有类对象
- 15. CopyFileEx具有多个文件,但只有一个副本对话框
- 16. 是(Object)构造函数的所有对象实例吗?
- 17. 使用没有对象的类函数
- 18. 类和数组真的只是JavaScript中的一个对象吗?
- 19. 迭代一个类的所有对象(但不是该类的父类 - C++)
- 20. 作用于对象的函数的所有权
- 21. 在Python中的函数内写入一个类:没有对象
- 22. 对于数组中的每个副本,找到第一个副本的索引
- 23. 如何将一个函数应用于对象或类似对象的数组
- 24. 类的另一个对象的行为有所不同,JavaSource_Calendar类
- 25. 适用JavaScript函数的所有对象的css类
- 26. 只有一个副本执行
- 27. 在C++中创建没有RVO的对象和副本ctors
- 28. 变量对于构造函数中所做的同一类型的所有对象都引用同一个对象
- 29. 每个应用程序应该只有一个EventSource对象吗?
- 30. 计数所有子跨类对象
我真的推荐一本好书。它不需要是C++特定的。首先你需要了解面向对象的原则。例如。什么是类,什么是对象。除此之外。 -1为坏的问题。你应该真的学会如何发表可读的问题。 – mkaes
@mkaes,以及爵士,让你觉得我不明白面向对象编程的原理,例如。什么是课堂,什么是对象。就语言而言,我接受它是写得很糟糕,因为我很匆忙 – SegFault