回首页 回首页 ◎ 设为首页  
◎ 收藏本站  
◎ 给我留言  
  
  首 页  C/C++教程  C++之父的FAQ  C/C++动向  C/C++源代码  C/C++误区  Unix/Linux  下载中心  乱七八糟  蚂蚁的Blog  
  当前位置:首 页 >> C++之父的FAQ >> 普通 FAQ >> [翻译] 类的伟大之处是什么?
最 近 更 新
[翻译] 为何 C++ 没被用..
[转] 你推荐哪个C++编译..
[转] 你有没有想到C++会..
[转] C++是面向对象语言..推荐
[翻译] 为何 C++ 如此庞..
[翻译] 您是使用何种语..
[翻译] “C++”何得此名?
[翻译] C++ 归您所有吗?
[转] 为什么AT&T要支持C..
[转] 你为什么要发明C++?
最 新 推 荐
[转] C++是面向对象语言..推荐
[翻译] 您怎么看待 C++/..推荐
[翻译] 何谓泛型编程?..推荐
[翻译] 什么是面向对象..推荐
[转] 如果不必考虑和 C ..推荐
[翻译] 类的伟大之处是..推荐
[翻译] C 是 C++ 的子集..推荐
热 门 排 行
[转] C和C++的区别是什..
[翻译] 为何 C++ 没被用..
[转] 你推荐哪个C++编译..
[翻译] 什么是面向对象..推荐
[转] 学习C++从哪本书开..
[翻译] 类的伟大之处是..推荐
[转] 我怎么开始学习C++..
[转] 学习C++需要多少时..
[翻译] C 是 C++ 的子集..推荐
[翻译] 为何编译 C++ 版..
站 内 搜 索

Web stdcpp.cn
关键词

搜索方式

搜索范围

精确匹配
广 告

[翻译] 类的伟大之处是什么?


来源:蚂蚁的 C/C++ 标准编程 作者:Bjarne Stroustrup 翻译:antigloss 等级:精品
发布于2006-12-02 15:19 被读1231次 【字体:

类的伟大之处是什么?

    类可以帮助你组织代码和分析程序。你可以大致理解为,类可以让你避免犯错,而如果你犯错了,类使你易于寻找错误。也就是说,类大大提高了代码的可维护性。

    类是思想和观念的代码形式。类的对象是思想的具体实例在代码上的体现。没有类,读代码的人只能猜测数据和函数的关系——类能清楚地表明这种关系,并且能被编译器理解。有了类,程序的高层结构就更能反映在代码上,而不单单是在注释中。

    一个设计良好的类能为用户提供简洁易用的接口,并将其内部结构隐藏起来,用户根本不必了解其内部结构。如果内部结构不应该被隐藏——例如,因为用户需要随意改变类中的任何数据成员——你可以把这种类认为是“普通的老式数据结构(data structure)”;例如:

        struct Pair {
            Pair(const string& n, const string& v) : name(n), value(v) { }
            string name, value;
        };

注意,数据结构也可以使用辅助函数,例如构造函数。

    设计类时,思考类有哪些方面在任何时刻对其每个对象都是通用的,这会很有用。这种通用的属性被称之为不变要素(invariant)。例如,vector 的不变要素是,其内部有一个指针,指向一系列元素,这些元素的数目保存于一个整型变量。每个构造函数都有责任去构建类的不变要素,这样成员函数才能依赖这些不变要素。成员函数退出时必须保持不变要素的有效性。这种思维方式对于管理资源的类来说更是特别有益,如管理锁(locks)、sockets 和文件的类。例如,一个处理文件的类的不变要素是,它有一个指针,指向一个打开的文件。该类的构造函数负责打开文件,而其析构函数负责释放构造函数获取的资源。例如,该类的析构函数负责关闭构造函数打开的文件:

        class File_handle {
        public:
             File_handle(const char* n, const char* rw)
                 { f = fopen(n,rw); if (f==0) throw Open_failure(n); }
             ~File_handle() { fclose(f); } // destructor
             // ...
        private:
            FILE* f;
        };

    如果你未曾使用过类,你会觉得这番说明有些地方相当费解并且会低估类的用处。要寻找例子,和所有优秀的教科书一样,TC++PL(C++ 程序设计语言)里有很多例子;例如,漫游标准库。大多数现代 C++ 库都包含类(当然还有其它东西),库使用指南是寻找有用的类的例子的最佳场所之一。

原文地址http://www.research.att.com/~bs/bs_faq.html#class

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 Bjarne Stroustrup 翻译:antigloss 共同所有,转载请注明原作者和出处。谢谢。



相关专题:C++ 之父的言论
[转] 我该把const写在类型前面还是后面?
[翻译] 我应该使用按值传递还是按引用传递?

上一篇:[翻译] “bjarne”是冒名顶替的吗?
下一篇:[转] 那篇 IEEE 对你的采访是真的吗?

共有评论 3 条 网友评分 1分 查看全部评论

游客:will1777
评分:0
默认就是public,可以不写的....
幸亏邮件被腿~不是人家忘了..........
游客:CPP菜鸟
评分:0
默认是private的,同学。默认是public的是结构体
游客:antigloss
评分:0
邮件前些天终于发送成功了,他已经修改了原文,所以我也将译文修改了一下。

查看全部评论

【发表评论】 评分:1分 2分 3分 4分 5分


验证码:

Powered By Www.Xydw.COM Ver1.14 管理
Copyright © 2005-2006 蚂蚁的 C/C++ 标准编程 All Right Reserved. XCMS
粤ICP备06014124号   站长:Antigloss