`
- 浏览:
16083 次
-
cpp 代码
- #include<iostream></iostream>
- using namespace std;
- class A{
- int i;
- public:
- A(int i)
- {
- cout<<"construct A: "<<
- this->i=i;
- }
- ~A()
- {
- cout<<"destruct A: "<<
- }
-
- };
- A a(1);
- void f1()
- {
- static A b(2);
- }
- void f2()
- {
- static A b(3);
- }
- int main()
- {
- f1();
- return 0;
- }
- 由于自己对static对象保存在静态数据区(data or bss)中,所以在昨天的笔试中想当然的认为都会初始化,但其实不是这样。
- 在静态数据区只是分配了空间而已,而对于一个类的构造是有空间与构造两个步骤的。
- 在一个函数中定义一个变量,是空间与构造同时进行。
- 而在静态数据区,如果你不去碰它。永远只是分配空间而已。
- 去IBM笔+面的收获:自己的底层知识远远不够。顶层概念也不清晰。平时有点自以为是了。老把自己当高手,纯粹扯淡。
- 如果一个题目abcd4个选项,别人能排除1个选项,而我水平高点能排除两个选项,根据倒霉蛋原理,最后还是都会选一个错的答案,有什么用,相反一些错误的思考会让自己做错一个什么都不懂的人凭直觉就能做对的题。所以真正的高手都是能排除3个选项的人。而我,还差得远呢。
- static对象都是放在bss中的,不管代码中是否初始化。但估计对于有初始化语句的对象有额外的标志。以引导构造函数发生。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### 关于Static与Const的理解 在程序设计领域中,`static`与`const`是非常重要的关键字,它们在C++等编程语言中有着广泛的应用。本文将深入探讨这两个关键字的含义、用法及其背后的原理。 #### Static关键字详解 ...
"关于static关键字的总结" static 关键字是 Java 语言中一个非常重要的概念,它可以用来修饰变量、方法、内部类和代码块等。下面我们将详细介绍 static 关键字的由来、作用和用法。 一、static 关键字的由来 在 ...
### 关于static的小结(Java内存溢出) #### 标题和描述中的知识点 在《关于static的小结(Java内存溢出)》这篇文章中,作者主要探讨了与Java中的`static`关键字相关的知识点,以及如何可能导致内存溢出的情况。...
面向对象与Java实现:深入解析多态、static与final 面向对象编程(OOP)是一种流行的编程范式,它将现实世界中的实体抽象成类和对象,通过封装、继承和多态三大特性,使得代码更加模块化、易于维护和扩展。Java作为...
通过以上示例,我们可以看到JavaScript中通过函数作用域、闭包以及对象字面量来模拟public、private和static行为的实现方法。在实际的前端开发中,这些概念的模拟为JavaScript的面向对象编程提供了更加丰富的模式和...
对象根据其存储位置的不同,可以分为四类:全局对象、局部对象、静态(static)对象、以`new`方式产生的局部对象。每类对象都有特定的生命周期,即它们的创建时机与销毁时机有所不同。 #### 全局对象 全局对象是指...
关于构造函数是否是静态方法,《Java编程思想》中的说法可能是指,虽然构造函数不直接使用`static`关键字,但它们在逻辑上类似于静态方法,因为它们在创建对象时被调用,且不依赖于实例状态。然而,构造函数并非真正...
当我们定义一个 static 变量时,所有对象共享同一个变量的值;对于 static 方法,我们可以通过类名直接调用,而无需创建对象。 1. **静态变量(static variables)** 静态变量是属于类的,而非实例的。这意味着...
在学习 static 成员初始化时,我们发现了网上有很多关于 static const 成员的初始化资料。const 成员要在构造函数初始化,而 static 成员在需要在类体外初始化,那么 static const 和 const static 成员应该在哪里...
因此,static 对象可以在它的任何对象创建之前访问,无需引用任何对象。 静态方法 静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用 this 和 super 关键字,不能直接访问所属类的实例...
二、static属性与非static属性还有一个最大的区别,所有的非static属性必须产生实例化对象之后才可以访问,但是static属性不受实例化对象的控制,也就是 说,在没有产生实例化对象的情况下依然可以使用static属性。 ...
Java中的`static`关键字是面向对象编程中的一个重要概念,它用于修饰类的成员变量和成员方法,以及静态初始化块。在Java中,`static`关键字具有以下几个核心特点和用途: 1. **类属性与类方法的设计思想**: 类的...
Java 中的 static 关键字是用于声明类的成员变量和成员方法的,它可以使得变量和方法属于类本身,而不属于某个对象。静态变量也称为类变量,静态方法也称为类方法。静态变量和静态方法可以直接通过类名调用,不需要...
Java面向对象程序设计static关键字 Java面向对象程序设计中,static关键字是一个非常重要的概念,它有很多特点和作用,本文将对static关键字的特点、作用和使用场景进行详细的解释。 static关键字的特点 首先,...
这意味着无论创建了多少个类的对象,`static`成员变量在内存中只有一份拷贝,所有对象共享这个变量的值。这种特性使得`static`成员变量在处理那些与类整体相关而非特定对象相关的数据时非常有用。例如,在上面的`...
以下是关于`static`变量和`static`函数的详细解释。 **一、static变量** 1. **静态局部变量**: 静态局部变量在函数内部定义,但不同于普通局部变量,它在整个程序运行期间都存在,而不是在函数调用结束后被销毁...
Occluder Static 和 Occludee Static 是关于 Unity3D 中与遮挡剔除技术有关的,而 Navigation Static 是生成导航网格用的。 三、静态选项的使用场景 静态选项的使用场景非常广泛,例如: * 对于游戏场景中的静止...
在Java编程语言中,`static`关键字是一个非常重要的修饰符,它有多种用途,涉及到类、对象以及变量和方法的生命周期。本视频教程详细讲解了`static`关键字在Java中的应用及其背后的原理。 首先,我们要理解`static`...
在Java编程语言中,`static`关键字扮演着至关重要的角色,它定义了类级别的变量和方法,不受实例化对象的影响。本篇文章将深入探讨`static`的使用方法、原理及其在代码块中的应用。 首先,我们要理解`static`修饰符...
下面我们将深入探讨`static`关键字的工作原理及其应用场景。 1. **静态变量** 静态变量是属于类本身而非类的实例的变量。这意味着所有类的实例共享同一份静态变量的副本,它们在内存中只存储一次。静态变量可以...