#include <iostream> using namespace std; class Test { private: int a; static int sum; public: Test(int i); void display(); }; //类的实现部分 Test::Test(int i) { a=i; sum+=a; } void Test::display() { cout<<"a="<<a<<", sum="<<sum<<endl; } int Test::sum=0; int main() { Test x(10), y(20), z(30); x.display(); y.display(); z.display(); cout<<"三个对象所占的空间大小依次为: "<<sizeof(x)<<", "<<sizeof(y)<<", "<<sizeof(z)<<endl; cout<<endl; return 0; } 问题: 1、本程序中的数据成员sum与a相比,有什么不同? 2、语句int Test::sum=0; 实现的功能是什么? 3、从运行结果来看,为什么三个对象调用成员函数display()时输出的sum值是否相同?从中你能得出什么结论? 4、如何解释三个对象所占的内存空间大小?
时间: 2024-01-03 21:05:32 浏览: 55
1、数据成员a是每个对象独有的,而数据成员sum是所有对象共享的。因为sum被声明为静态变量,所以它不属于某一个具体的对象,而是属于整个类。
2、语句int Test::sum=0; 是类的实现部分,用来初始化静态数据成员sum的值为0。因为静态成员变量只能被定义一次,所以该语句通常在类的实现文件中出现,而不是在头文件中。
3、三个对象调用成员函数display()时输出的sum值相同,都是60。这是因为sum是静态变量,它被所有对象共享,每次调用display()函数时都会输出当前所有对象的a值之和。
从中可以得出结论:静态变量是所有对象共享的,而非静态变量是每个对象独有的。
4、三个对象所占的内存空间大小相同,都是4个字节。这是因为每个对象只有一个int类型的数据成员a,它占据4个字节的空间。因此,sizeof(x)、sizeof(y)、sizeof(z)的值都是4。
相关问题
补全程序,并写出程序运行结果。 #include <iostream> using namespace std; class Class { public : Class ( int...
补全程序如下:
```
#include <iostream>
using namespace std;
class Class {
public:
Class(int a, int b, int c) {
x = a;
y = b;
z = c;
}
void print() {
cout << "x: " << x << endl;
cout << "y: " << y << endl;
cout << "z: " << z << endl;
}
private:
int x;
int y;
int z;
};
int main() {
Class obj(1, 2, 3);
obj.print();
return 0;
}
```
程序运行结果为:
```
x: 1
y: 2
z: 3
```
程序定义了一个名为 Class 的类,该类包括有参构造函数和一个 print() 函数,构造函数用于对类的私有成员变量进行初始化,print() 函数用于输出类的私有成员变量。在主函数 main() 中,创建了一个名为 obj 的 Class 类对象,构造函数传入三个整数参数 1、2 和 3。最后调用 obj 对象的 print() 函数,输出 obj 对象的私有成员变量 x、y 和 z 的值。
#include<iostream>using namespace std;
这是一个C++的代码片段,它包含了iostream头文件和使用了命名空间std。iostream头文件提供了输入输出流的功能,而using namespace std;语句则是为了方便使用std命名空间中的函数和对象,避免每次都需要写std::。
以下是一个简单的示例代码,展示了如何使用iostream头文件和命名空间std来输出一句话:
```cpp
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
```
这段代码会输出"Hello, World!",endl是一个特殊的控制符,用于在输出流中插入一个换行符。
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)