一个例子–c++比c做的好

使用c++来实现Trace类,代码如下

#include "stdafx.h"#include <iostream>using namespace std;class Trace{public:    Trace() { noisy = 0;  f = stdout;}    Trace(FILE *ff) {noisy = 0; f = ff;}    void print(char *s) { if (noisy)    { fprintf(f, "%s", s);} }    void on() {noisy = 1;}    void off() {noisy = 0;}private:    int noisy;    FILE *f;};int _tmain(int argc, _TCHAR* argv[]){          Trace t(stderr);    t.on();    t.print("Begian main()\n");    t.print("End main()\n");    return 0;}

使用c解决方案;

static int noisy = 1;void trace(char *s){    if (noisy)    {        printf("%s\n", s);    }}void trace_on() {noisy = 1;}void trace_off() {noisy = 0;}

缺陷:

trace函数不内联,跟踪关闭时,还保持着函数调用开销,效率很低。

c版本引入了3个全局名字,trace, trace_on ,trace_off,c++版本只引入了一个

c版本很难讲这个例子一般化,使之能输出到一个以上的文件中,如果要做到这点,很明显的要再增加一个参数,或者再加一个函数,从开销调用和维护上来说相比c++版本都要颇费些精力。

原文链接: https://www.cnblogs.com/chessyoung/archive/2011/08/21/2147929.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/30947

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午8:12
下一篇 2023年2月8日 上午8:13

相关推荐