operator typename() const 用作类型转换

operator typename() const 用作类型转换

C++可以默认转换数据类型也可以强制进行类型转换重载转换操作符就是为了方便对类产生的对象进行转换操作,它必须是成员函数实现类的类型转换只能应用于一个转换,不能连续进行转换操作。

 

template <typename T>
class Base
{
public:
     Base(T&);
     //类型转换构造函数
     operator T() const
    {
            return typeT;
            //这里必须有,要不然会报错
    }
     //operator类型转换
private:
};

 

如:

template< class T >
class A {
public:
 operator T() {  // 类型转换操作
  return _aT;
 }
 operator T() const {   // 类型转换操作
  return _aT;
 }
 T& operator=(const T& aT) {
  _aT = aT;
  return _aT;
 }

private:

 T _aT;
};

int main()
 {
 A<int> a;
 a = 1;
 int c = a;

// a = -a;       
// a = a + 1;    
}

this.value.compareTo(n.value); } } else { if (this.length < n.length) { return -1; 模板类可以通过定义类型转换函数来实现强制类型转换。具体地,可以在模板类中 } else if (this.length > n.length) { return 1; } else { return this.value.compareTo(n.value); 定义一个转换函数,将当前模板类对象转换为指定类型的对象。例如,下面是一个将模 } } } // 转换为自然数 public MyNaturalNumbers toMyNaturalNumber() { My板类 MyTemplateClass 转换为整型的示例: ```cpp template <typename T> class MyTemplateClass { public: NaturalNumbers result = new MyNaturalNumbers(); result.setValue(this.getValue()); return result; } } // 测试类 Test public // ... operator int() const { // 将 MyTemplateClass 转换为整型 return static_cast<int>(m_data class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); // 自然数测试); } private: T m_data; }; ``` 在上面的代码中,operator int() 函数是一个类型转换 MyNaturalNumbers a = new MyNaturalNumbers(); System.out.print("请输入自然数 a 的值:"); String函数,将 MyTemplateClass 类型转换为整型。在使用时,可以通过强制类型转换的方式调用 value = input.nextLine(); a.setValue(value); System.out.println("a = " + a); MyNaturalNumbers b = new MyNaturalNumbers(); System.out.print("请输入自然数 b 的值:"); value = input.nextLine(); b.setValue(value该函数,将 MyTemplateClass 对象转换为整型,例如: ```cpp MyTemplateClass<double> obj(3.); System.out.println("b = " + b); MyNaturalNumbers c = (MyNaturalNumbers) a.add(b); System14); int value = static_cast<int>(obj); // 将 obj 转换为整型 ``` 需要注意的是,类型.out.println("a + b = " + c); MyNaturalNumbers d = (MyNaturalNumbers) a.subtract(b); System.out转换函数可能会带来一些安全隐患,因此在使用时需要谨慎考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值