⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch6tiny.cc

📁 C++ source code for book-C++ and Object Oriented Numeric computing for scientists and engineers
💻 CC
字号:
#include <iostream>

class tiny {
  char v;
  void assign (int i) {                                   // for range checking
    if (i & ~0xf) { std::cout << "range error\n"; std::exit (1); }
    v = i;
  }
public:
  tiny(int i) { assign(i); }                              // constructor
  tiny& operator=(int i) { assign(i); return *this; }     // assignment
  operator int() const { return v; }                      // conversion operator
};

inline tiny operator+(tiny t, tiny s) {
  return tiny(int(t) + int(s));                                 
}

void f(tiny t, int i) {

  // error, ambiguous: int(t) + i or  t + tiny(i) ?
  std::cout << t + i << '\n'; 
}

void ff(tiny t, int i) {
  std::cout << t + tiny(i) << '\n'; 
}

void fff(tiny t, int i) {
  std::cout << int(t) + i << '\n'; 
}

int main() {
  tiny t = 12;       // int is assigned to tiny by tiny& tiney::operator=(int)
  int i  = t;        // tiny is converted to int by tiny::operator int() 
//tiny tt = 16;      // range error occurs, program exits.

  std::cout << "i = " << i << '\n';
  std::cout << "tt = " << int(t) << '\n';

  f(t, 12);
  ff(t, 12);
  fff(t, 12);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -