求解几个C++的入门习题

来源:百度知道 编辑:UC知道 时间:2024/05/10 08:53:45
小弟新学C++,有几个入门习题不理解,还望前辈指点。
小弟的百度积分不多,5分一题,2题,共10分,加上满意答案的5分共15分。
1,
#include <iostream.h>
class A
{
int a;
public:
A() {a=0;}
A(int aa)
{
a=aa;
cout<<a++;
}
};
void main()
{
A x,y(2),z(3);
cout<<endl;
}
输出结果:23
疑问处:A x,y(2),z(3);中有个x加上y和z就是3个,输出时候为什么只有2个数?
2,
#include <iostream.h>
int i=0;
class A
{
public:
A(){i++;}
};
void main()
{
A a,b[3],*c;
cout<<i<<endl;
}
输出结果:4
疑问处:这个真是没看懂。

第一个问题:
cout<<a++; 语句只是包含在A(int aa){}中,就是带参数的函数中,所以main()方法中即使声明了对象x但是没带参数,所以调用A() {a=0;}但是没输出,要是写成A() {a=0;cout<<a++;} 就是输出三个数了。你要看有没有带参数。
第二个问题:
i初始化为0,main()方法中定义a对象时,调用类A构造函数使i=1;接着定义数组b[3],相当于再定义三个对象b1,b2,b3;使i加三次1,结果到这里i=4;接着还定义指针对象*c,但是由于指针指的是地址,所以没有调用构造函数,使得i仍然为4;所以结果就是4

第一个
A 有两个重载的构造函数呀, A x; 没给参数,于是选择第一个构造函数,不输出。

第二个
A a,b[3],*c;
这里, A a; 定义了一个A的实体, 所以A的构造函数被执行
A b[3];同理,长度为3的数组,于是构造函数被执行3次、
A *c; c是一个指针,没有实体,所以没有执行构造函数, 只有 c = new A;时建立了实体,才执行构造函数
A() 被执行4次, i 就是4咯

1.默认构造函数 A() {a=0;} 是没有输出啊~

2.A(){i++;} ,声明一个A的对象就会调用默认构造函数,主函数中共声明了4个A的对象啊,所以i累加了4次,因为它是全局静态变量,所以累加后的值一直保存着,不就是4喽