//C++类转换构造函数和转换函数复习
#include
#include
using namespace std;
class Student
{
private:
string name;
int age;
double grade;
public:
Student(string name_, int age_, doubl...
分类:
编程语言 时间:
2015-05-19 10:46:21
阅读次数:
125
用转换构造函数可以将一个指定类型的数据转换为类的对象。但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据)。
C++提供类型转换函数(type conversion function)来解决这个问题。类型转换函数的作用是将一个类的对象转换成另一类型的数据。如果已声明了一个Complex类,可以在Complex类中这样定义类型转换函数:
...
分类:
其他好文 时间:
2015-05-04 08:44:55
阅读次数:
207
说明:C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。 C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器,2 是个默...
分类:
其他好文 时间:
2015-03-17 00:21:42
阅读次数:
174
其实我们已经在C/C++中见到过多次标准类型数据间的转换方式了,这种形式用于在程序中将一种指定的数据转换成另一指定的类型,也即是强制转换,比如:int a = int(1.23),其作用是将1.23转换为整形1。然而对于用户自定义的类类型,编译系统并不知道如何进行转换,所以需要定义专门的函数来告诉编译系统改如何转换,这就是转换构造函数和类型转换函数!
一、转换构造函数...
分类:
编程语言 时间:
2014-12-02 11:54:43
阅读次数:
190
// 2202.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
using namespace std;
class Test
{
public:
/*
用转换构造函数可以将一个指定的类型的数据转换为类的对象
用类型转换函数可以将一个类的对象转换成一个指定类型的数据
类型转换函数的一般形式为:
o...
分类:
编程语言 时间:
2014-11-22 17:29:57
阅读次数:
183
解析C++转换构造函数
什么叫转换构造函数?
当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数。
参考一下示例:
// TypeSwitch.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
usin...
分类:
编程语言 时间:
2014-11-20 00:09:29
阅读次数:
185
前面我们看到由一个实参调用的非显式构造函数定义了一种隐式的类型转换,这种构造函数将实参类型的对象转换成类类型。我们同样能定义对于类类型的类型转换,通常定义类型转换运算符可以做到这一点。转换构造函数和类型转换运算符共同定义了类类型转换,这样的转换有时也被称作用户定义的类型转换。类型转换运算符类型转换运...
分类:
其他好文 时间:
2014-10-29 09:06:41
阅读次数:
150
实现将A类的对象转换为B类对象的方法有3种:(A类对象单形参构造函数(除掉默认形参),并将B类对象作为形参,同时禁止使用explicit关键子,形如:A(B b,int i=1,int j=2)。
方法三:在B类中定义类型转换函数,该转换构造函数无返回值,但是一定要有return 语句,r...
分类:
编程语言 时间:
2014-08-15 00:06:06
阅读次数:
337
如果构造函数只接受一个实参,则它实际上定义了转换为此类类型的隐式转换机制,有时我们把这种构造函数称作转换构造函数。能通过一个实参调用的构造函数定义了一条从构造函数的参数类型向类类型隐式转换的规则。例如,在Sales_data类中,接受string的构造函数和接受istream的构造函数分别定义了从这...
分类:
其他好文 时间:
2014-08-09 02:30:26
阅读次数:
236
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。...
分类:
编程语言 时间:
2014-07-30 23:59:25
阅读次数:
492