首页 > 代码库 > 重写操作符

重写操作符

// TestABCD.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>///////////////////////////////// Environment /////////////////////////////////////////class Environment{public:    Environment(){ ZeroMemory(m_err, 255); };    void Print(){ printf(m_err); };    Environment& operator<<(char const* str); //类内的声明private:    char m_err[255];};//类内的定义Environment& Environment::operator<<(char const* str) {    int len=strlen(m_err);    strcpy_s(m_err+len, 255, str);    return *this;};///////////////////////////////// OuterEnvir /////////////////////////////////////////class OuterEnvir{public:    OuterEnvir(){ ZeroMemory(m_msg, 255); };    void Print(){ printf(m_msg); };public: //如果用private,重写操作不能访问到私有成员变量。    char m_msg[255];};//类外的声明OuterEnvir& operator<<(OuterEnvir& envir, char const* str);//类外的定义OuterEnvir& operator<<(OuterEnvir& envir, char const* str){    int len=strlen(envir.m_msg);    strcpy_s(envir.m_msg+len, 255, str);    return envir;};//////////////////////////////////////////////////////////////////////////int _tmain(int argc, _TCHAR* argv[]){    Environment envir;    envir<<"one err done, "<<"one err done.\n";    envir.Print();    OuterEnvir outer;    outer<<"outer msg. "<<"outer msg.\n";    outer.Print();    getchar();    return 0;}

运行效果:

 

完。