构造函数调用的次数问题

  • Post author:
  • Post category:其他


关于类在声明变量的时候,到底有没有实例化有没有调用构造函数的问题

一道笔试题

遇到了好多次类似的,每次都感到困惑

然后做完也不求甚解下次继续不会

原题如下:

问实例化类的个数

在这里插入图片描述

#include <iostream>
#include <string>

using namespace std;

class test {
	static int sum;
public:
	test() {
		sum++;
		print();
		cout << "test() is called. " << endl;
	}
	~test(void) {
		sum--;
		print();
		cout << "~test is called" << endl;
	}
	test(const test &para) {
		sum++;
		print();
		cout << "test(const test &para) is called. " << endl;
	}
	void print(void) {
		cout << "sum = " << sum << endl;
	}
};

int test::sum = 0;

int main(int argc, char *argv[])
{
	test *a;             
	test b;
	test c[3];
	test &ra = b;
	test d = b;
	test *pa = c;
	test *p = new test;
	return 0;
}

在这里插入图片描述

总共是6个

test *a;           指针不会实例化

test b;            正常实例化1个

test c[3];         实例化数组个数即3个

test &ra = b;      引用不会实例化

test d = b;         复制构造函数会实例化1个

test *pa = c;        指针不会实例化

test *p = new test;      new会实例化对象



版权声明:本文为weixin_45393946原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。