假设类 A 有构造函数 A(int a),在类 A 的其他构造函数中调用该构造函数用语句为
时间: 2024-05-17 08:12:24 浏览: 45
可以使用成员初始化列表来调用类 A 的构造函数 A(int a)。例如,假设类 A 还有一个构造函数 A(int a, double b),可以在该构造函数中调用 A(int a) 的语句为:
```
A(int a, double b) : A(a) {
// 其他构造函数的实现
}
```
这样就可以在 A(int a, double b) 构造函数中先调用 A(int a) 构造函数,再进行其他的构造操作。
相关问题
2假设类 A 有构造函数 A ( int a ),在类 A 的其他构造函数中调用该构造函数并使用参数为2时,调用语句为 ( A ) A (2) ( B ) super (2) ( B ) this (2) ( D ) A )
这个问题中的调用语句是错误的,有一些括号不应该存在。
在类 A 的其他构造函数中调用 A(int a) 构造函数并使用参数为 2 时,应该使用以下调用语句:
```
A(int a) : A(2) {}
```
这个调用语句使用了构造函数的成员初始化列表,其中调用了 A(int a) 构造函数并传入了参数 2。
如果你的意思是想让类 B 和类 D 继承类 A 并调用 A(int a) 构造函数,调用语句应该是这样的:
```
class B : public A {
public:
B() : A(2) {}
};
class D : public A {
public:
D() : A(2) {}
};
```
其中类 B 和类 D 各自定义了无参构造函数,在构造函数的成员初始化列表中调用了 A(int a) 构造函数并传入了参数 2。
填写程序所缺代码,并回答相关问题: #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)封闭类的构造函数、析构函数如何执行?
(1) 封闭类是指成员变量和成员函数都在类内部定义的类。在封闭类中,成员变量可以是另一个类的对象或指向另一个类对象的指针。
(2) 封闭类带参数的构造函数需要在初始化列表中初始化成员变量,语法格式如下:
```cpp
类名::类名(参数列表): 成员变量1(值1), 成员变量2(值2), ... {}
```
(3) 封闭类的构造函数在对象创建时被调用,执行顺序是先执行初始化列表中的成员变量初始化,然后执行构造函数中的其他语句。析构函数在对象销毁时被调用,执行顺序是先执行析构函数中的语句,然后执行成员变量的析构函数。对于封闭类中的成员变量,它们的构造函数和析构函数的执行顺序与它们在类中的声明顺序相同。
阅读全文