最近,我浏览了 O'Reilly Media 的C++ Pocket Reference副本,当我遇到一个关于用户定义类型的用户定义转换的简短部分和示例时,我感到很惊讶:
#include <iostream>
class account {
private:
double balance;
public:
account (double b) { balance = b; }
operator double (void) { return balance; }
};
int main (void) {
account acc(100.0);
double balance = acc;
std::cout << balance << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我用C++编程了一段时间,这是我第一次看到这种运算符重载.这本书对这个主题的描述有些简短,给我留下了一些关于这个功能的未解答的问题:
是否可以完成用户定义的用户定义转换?例如
operator std :: string(){/*code*/}
我很少在论坛上发布问题,但这个问题让我难住了。我很好奇导致此问题的原因(解决方案也很好,但最重要的是,我想知道为什么会遇到此问题):
我最近编写了一个 python 脚本,用于包装由 PBS 作业启动的远程命令的调用:
#! /usr/bin/env python
#
# Copyright (c) 2009 Maciej Brodowicz
# Copyright (c) 2011 Bryce Lelbach
#
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
from datetime import datetime
from string import letters, digits
from types import StringType
from optparse import OptionParser
from threading import Thread
# subprocess instantiation wrapper. Unfortunately older Python still lurks on
# some machines.
try:
from subprocess import Popen, …Run Code Online (Sandbox Code Playgroud)