头文件
#pragma once
#include <string>
class StringInt
{
int i;
std::string str;
public:
StringInt(int i = -1);
StringInt(std::string s = "");
explicit operator int() const;//将自定义类型显式转换为int类型
explicit operator std::string() const;//将自定义类型显式转换为std::string类型
~StringInt();
};
cpp文件
#include "StringInt.h"
StringInt::StringInt(int i):i(i)
{
str = "";
}
StringInt::StringInt(std::string s):str(s)
{
i = -1;
}
StringInt::operator int() const
{
return i;
}
StringInt::operator std::string() const
{
return str;
}
StringInt::~StringInt()
{
}
主函数
void test_stringInt()
{
StringInt p1("s");
StringInt p2(12);
int a = static_cast<int>(p1) + static_cast<int>(p2);
std::cout << a<<" ";
std::cout << static_cast<std::string>(p1) << " " << static_cast<std::string>(p2);
}