四、(基础题)封闭类的构造函数与析构函数。 填写程序所缺代码,并回答相关问题: #include <iostream> using namespace std; class A { private: int a; public: A() { a=0; cout<<"A类的无参构造函数被调用,a="<<a<<endl; } A(int x) { a=x; cout<<"A类的有参构造函数被调用,a="<<a<<endl; } ~A() { cout<<"A类的析构造函数被调用,a="<<a<<endl; } }; class B { private: int b; A a1; A a2; public: B() { b=0; cout<<"B类的无参构造函数被调用,b="<<b<<endl; } B(int x,int y, int z): (1) //分别用y,z去初始化a1、a2,用x去初始化b { (2) ; cout<<"B类的有参构造函数被调用,b="<<b<<endl; } ~B() { cout<<"B类的析构造函数被调用,b="<<b<<endl; } }; int main() { B obj1; cout<<endl; B obj2(10,20,30); cout<<endl; return 0; } 问题: (1)什么是封闭类? (2)封闭类带参数的构造函数如何书写? (3)封闭类的构造函数、析构函数如何执行?
时间: 2023-10-30 11:35:31 浏览: 62
构造函数和析构函数程序(c++)
(1)封闭类(Nested Class)是在一个类的内部定义的另一个类,在封闭类中,被嵌套的类可以访问封闭类的成员,包括私有成员。
(2)封闭类带参数的构造函数的书写方式和普通类的带参数构造函数相同,在构造函数的参数列表中传入所需的参数,并在初始化列表中初始化封闭类中嵌套的类的对象。
(3)封闭类的构造函数、析构函数执行的顺序是,先执行封闭类的构造函数,再执行嵌套类的构造函数,最后执行封闭类的析构函数,再执行嵌套类的析构函数。在B类的有参构造函数中,使用初始化列表的方式对a1、a2进行初始化,即先调用它们的有参构造函数。在B类的析构函数中,先调用a2的析构函数,再调用a1的析构函数,最后调用B类的析构函数。
阅读全文