c_cpp 重载和变换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 重载和变换相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <string.h>
#include <stdio.h>
//#include <stdlib.h>// itoa
using namespace std;

class MyString{
public:
	MyString(char* str){
		cout << "construct:" << str << endl;
		strcpy(	this-> str, str);
	}
	operator int(){// 对象变换为其他类型 
		int num;
		sscanf(this-> str,"%d",&num);
		cout << "to int:";
		this->disp();
		return num;
	}
	MyString&  operator = (int num){ // 赋值给对象
		char str[10];
		sprintf(str,"%d",num);
		strcpy(this-> str, str);
		//strcpy(	this-> str,itoa(num, str, 10));
		return *this;
	}
	void disp(){
		cout<< this-> str << endl;
	}
private:
	char str[10];
};

int main() {
	// your code goes here
	MyString s1 = MyString("s1");
	s1.disp();
	s1 = 22;
	s1.disp();
	s1 =  2 +  s1; //  2 + (int) s;
	s1.disp();
	MyString s2 = MyString("s2");
	s2 = s1;
	s2.disp();
	s2 = (int) s1;
	s2.disp();
	s2 = !s2; 
	s2.disp();  // to int :24   0
	return 0;
}

以上是关于c_cpp 重载和变换的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp CPP - 教程012 - 操作员重载和文件I / O.

c_cpp 函数重载

c_cpp 运算符重载

c_cpp C ++函数调用符重载

c_cpp 重载调用运算符C ++

c_cpp 带有重载运算符的模板