关于静态对象构造

简介:
//分析以下程序的执行结果
#include<iostream.h>
#include<conio.h>
class  Sample
{
         int  x;
         public :
         Sample( int  a)
         {
                 x=a;
                 cout<< "constructing object:x=" <<x<<endl;
         }
};
 
void  func( int  n)
{
         static  Sample obj(n);
}
 
int  main()
{
         func(1);
         func(10);
         getchar ();
         return  0;
}
//--------------------------------------------------------------------------

分析:本题说明静态对象构造函数的调用情况,由于在func()函数中定义的对象obj是静态对象,故只被构造一次,所以输出为:

counstructing object:x=1

 

注意:静态对象和静态变量一样,只被构造一次。块作用域的静态变量,在首次进入到定义该静态对象的函数时,构造该静态对象,以后进入该函数时不再构造静态对象。

相关文章
|
3月前
|
JSON 程序员 C#
使用 C# 比较两个对象是否相等的7个方法总结
比较对象是编程中的一项基本技能,在实际业务中经常碰到,比如在ERP系统中,企业的信息非常重要,每一次更新,都需要比较记录更新前后企业的信息,直接比较通常只能告诉我们它们是否指向同一个内存地址,那我们应该怎么办呢?分享 7 个方法给你!
|
5月前
|
Java 编译器
静态字段和静态方法3-14
静态字段和静态方法3-14
|
9月前
2020-10-10 数组和对象的区分方法
2020-10-10 数组和对象的区分方法
|
9月前
|
数据安全/隐私保护 C++
C++ 构造函数实战指南:默认构造、带参数构造、拷贝构造与移动构造
C++中的构造函数是特殊成员函数,用于对象初始化。类型包括默认构造函数(无参数)、带参数构造函数、拷贝构造函数和移动构造函数。默认构造函数设置对象默认状态,带参数构造函数允许传递初始化值。拷贝构造函数复制已有对象,移动构造函数高效转移资源。构造函数的访问权限可控制为public、private或protected。理解构造函数有助于编写健壮的C++代码。关注公众号`Let us Coding`获取更多内容。
135 0
对象的相等和引用相等的区别
对象的相等和引用相等的区别
|
Java 编译器
对象的构造及初始化
对象的构造及初始化
96 0
|
存储 算法 Java
10-对象的实例化内存布局与访问定位
10-对象的实例化内存布局与访问定位
118 0
10-对象的实例化内存布局与访问定位
|
设计模式
单子设计模式 (对创建初始对象为静态,构造函数私有,返回值为对象的创建函数,private应用)
单子设计模式 (对创建初始对象为静态,构造函数私有,返回值为对象的创建函数,private应用)
单子设计模式 (对创建初始对象为静态,构造函数私有,返回值为对象的创建函数,private应用)
|
存储
集合作为函数参数传参时创建新集合对象的作用
易错点——List集合集合作为函数参数传参时创建新集合对象的作用
187 0
|
Java
构造器、对象数组、对象属性、静态实例块、this关键字
它的名字:构造函数、构造方法、初始化方法。 构造条件? 以后我们如何去使用构造器? 你觉得那些对象中那些属性值是必要的,你就在构造器中提出来(就是你如果想创造对象必须要传入我所需要的参数) public class Dog {//这里就是一个简单的类、狗的类 String name; .
1234 0