首页 > 试题广场 >

#有如下程序:执行后的输出结果应该是:#includeio

[单选题]
下面代码段执行后的输出结果是()
#include <iostream>
class cla {
    static int n;
public:
    cla() { n++; }
    ~cla() { n--; }
    static int get_n() { return n; }
};

int cla::n=0;

int main() {
    cla *p = new cla;
    delete p;
    std::cout << "n=" << cla::get_n() << std::endl;
    return 0;
}


  • n=0
  • n=1
  • n=3
  • n=4
一波操作下来没变化的。
发表于 2021-04-29 19:00:12 回复(0)
static成员变量和static成员函数都不是属于某个对象,而是属于这个类。static成员变量,类外定义初始化。声明的类指针由于new了分配了内存空间,所以会调用构造函数,delete调用析构函数。 有错误请指正。
发表于 2020-10-25 14:30:27 回复(0)
cla * p=new cla;   调用构造函数cla(){n++;},n = 1
delete p;    调用析构函数~cla(){n--;} ,n = 0
发表于 2021-07-25 22:13:56 回复(0)
静态成员变量属于类跟类对象无关,类成员函数可以正常访问静态成员变量;new 调用构造函数,静态成员变量实现自加1操作,delete操作调用析构函数类成员函数执行自减操作,所以最终结果是成员变量值未发生变化。
发表于 2021-05-10 22:01:32 回复(0)
我选的不是c的题目吗?
发表于 2023-01-18 18:24:20 回复(0)
考察类加载顺序
发表于 2021-12-02 13:25:17 回复(0)
析构函数不需要你去直接调用,任何对象(类的实例)被删除之后,系统都会自动调用析构函数。 一般的,如果你用new创建对象,那么在delete的时候,会调用对象的析构函数。如果对象是全局变量或者局部自动变量,则在这个变量的生存期结束的时候调用析构函数,比如局部自动变量是在函数返回的时候被删除,这个时候会调用析构函数。
发表于 2021-03-01 12:48:01 回复(0)
C语言的题你放什么c++
发表于 2023-10-06 12:39:17 回复(0)
都不用考虑复制构造函数,赋值符号函数之类的吗?
发表于 2023-05-10 13:41:41 回复(0)
类的加载顺序:new的时候分配内存,调用构造。然后调用析构。 静态成员变量默认初始化为0
发表于 2022-11-28 08:11:52 回复(1)
delete会当场触发析构函数吗?这个会不会和编译器有关?😵
发表于 2021-02-14 23:32:54 回复(0)