类型转换构造函数class type { public: type(argument);};中type(argument);的用法举例
时间: 2024-05-06 12:16:02 浏览: 60
假设我们有一个类`Person`,它有一个私有成员变量`age`和一个公有成员函数`getAge()`用于获取`age`的值。现在我们想要定义一个新的类`Student`,它除了拥有`age`这个成员变量外,还有一个`name`成员变量和一个`getName()`函数用于获取`name`的值。我们可以使用类型转换构造函数来实现将`Person`类型的对象转换为`Student`类型的对象。
首先,在`Student`类中定义一个类型转换构造函数,将`Person`类型的对象作为参数传递进去:
```
class Student {
public:
int age;
string name;
Student(Person p) {
age = p.getAge();
name = "unknown";
}
string getName() {
return name;
}
};
```
这样,当我们创建一个`Person`对象并将其作为参数传递给`Student`类的构造函数时,就会调用类型转换构造函数,将`Person`类型的对象转换为`Student`类型的对象。例如:
```
Person p;
p.setAge(20);
Student s = p;
cout << s.age << endl; // 输出 20
```
在这个例子中,我们创建了一个`Person`对象`p`,并将其年龄设置为20。然后,我们将`p`作为参数传递给`Student`类的构造函数,这时类型转换构造函数就会被调用,将`p`转换为一个`Student`对象`s`。最后,我们输出`s`的年龄,发现它的值是20。
需要注意的是,类型转换构造函数可能会导致数据丢失或不准确,因此在使用时需要谨慎。
阅读全文