关于类在声明变量的时候,到底有没有实例化有没有调用构造函数的问题
一道笔试题
遇到了好多次类似的,每次都感到困惑
然后做完也不求甚解下次继续不会
原题如下:
问实例化类的个数
#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 ¶) {
sum++;
print();
cout << "test(const test ¶) 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 版权协议,转载请附上原文出处链接和本声明。