`
xiongx
  • 浏览: 13973 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

《c++ primer 4th》--ch12--类和数据抽象

阅读更多
  所有成员必须放在类的内部声明。好处是编译的时候就能知道分配多大的储存空间。、

  const必须同时出现在类成员声明和定义处(包括函数后面的const)。与它刚好相反的是static,只能在放在声明处(如果放在了定义处,和C语言中static 表示internal linkage的含义有冲突了)。

  inline只是一个编译提示,具体参见:http://www.informit.com/blogs/30-C-Tips-in-30-Days-Tip-3-inline-Dos-and-Donts-


  class定义后面必须加上分号是为了和struct保持一致,class后面能够定义变量。例如:
class Sales_item{/*......*/} accum,trans;

  在const成员函数中,this的类型是一个指向const类类型对象的const指针。因此不能从const成员函数返回指向类对象的普通引用。

  构造函数不能声明为const。
  和java不一样,非static的类数据成员的初始化只能放在初始化列表(ctor initializer)中,在构造函数体执行前执行。
  ctor initializer只在构造函数的定义中而不是声明中指定。
  在ctor initializer中没有显示提及的每个成员,都使用与初始化变量相同的规则:对于类类型的成员,如果初始化列表没有显示初始化,则会隐式调用这些成员的默认构造函数,对于内置和复合类型,成员的初始值依赖于对象的作用域。
  ctor initializer的执行顺序是定义成员的次序(这一点和java相同)。
  和java不一样的是c++的构造函数之间的调用。例如:
class A{
public:
	A():i(2){}
	A(int i):i(i){
		this->i+=2;
		A();
	}
	int i;
};
A a(1);    //只执行A(int i):i(i)的ctor initializer。A();被当成了普通函数处理。

  java中this()必须写在第一行,c++没有这个限制。

  c++和c语言中一样,能够在函数内部声明函数,这一点造成了用一个默认构造函数初始化一个命名对象时,不能加上(),否则编译器会把它当成了一个函数声明。
string s(); //声明了一个名为s,无参数,返回值为string类型的一个函数


  对于static的数据成员,在类内部的说明只是declare而不是define,它们的定义放在类定义外部(成员定义隐含分配存储空间的意思,static成员的存储空间不属于它所在的class)。比较特殊的是integral or const enumeration类型的static const成员,它们的定义可以写在class定义的内部,但为了统一,建议还是在外部定义static成员。
  刚看完这个的时候有点马虎,以为所有的static const成员都能够在类内部初始化,于定义了一个int数组,死活不能通过编译,把定义放在类外部就可以了
class A{
public:
	static const int i[];
	static const int i[]={1,2}; // error
};
const int A::i[]={1,2};

分享到:
评论

相关推荐

    C++ primer 4th Edition 英文版

    《C++ Primer 4th Edition》是C++编程语言领域中的经典入门教程,由Lippman、Lajoie和 Moo三位作者共同编写。这本教材以其深入浅出的讲解方式和丰富的实例,深受广大C++初学者和专业开发者的喜爱。在第四版中,作者...

    C++ primer中文版-高清-带目录

    《C++ Primer中文版》是一本为初学者设计的C++编程教材,旨在帮助读者深入理解和掌握C++语言。这本书的高清版本提供了清晰的文本和图表,使得阅读体验更佳,尤其适合长时间学习和查阅。目录的存在使得学习者能够快速...

    C++ Primer 4rd -EN(英文清晰pdf,由本人亲自根据chm版本制作)

    ### C++ Primer 第四版 —— 详尽解析与学习指南 #### 一、书籍概述 《C++ Primer》第四版是一本全面介绍C++语言的权威教程。它不仅为初学者提供了清晰的教学方法,还深入地介绍了语言的细节,并强调了当前有效的...

    C++ Primer 5th 英文高清版 (带完整目录)

    《C++ Primer 5th》是C++编程领域的一部权威著作,由Lippman、Lajoie和 Moo三位专家合著。这本书以其深入浅出的讲解方式和丰富的实例,深受程序员们的喜爱。5th版更是针对C++11、C++14和C++17标准进行了全面更新,...

    c++ primer有目录pdf第五版本5th

    《C++ Primer》是有名的C++编程教材,其第五版(5th Edition)深入浅出地介绍了C++语言的基础知识以及C++11新标准的特性。这本书由Lippman、Lajoie和 Moo三位作者共同编写,是C++初学者和进阶者的重要参考书籍。 1....

    C++ Primer中文版--第四版

    C++ Primer中文版--第四版, 可能已经重复了。这个pdf版本有较详细的目录

    c++ primer 5th edition

    首先,C++是一种通用的、面向对象的编程语言,它在C语言的基础上增加了类、模板、异常处理等特性,使其具有更高的抽象能力和代码复用性。5th Edition作为最新版,涵盖了C++11、C++14和C++17标准的新特性和改进,这...

    C++Primer(第4版)-课后习题答案.pdf

    12. 第十二章类和数据抽象:讲解面向对象编程的核心概念,如类的定义、封装、构造函数、成员函数、友元等。 13. 第十三章复制控制:探讨对象的创建、复制和销毁,包括拷贝构造函数、赋值运算符重载以及浅拷贝和深...

    C++ Primer第四版【中文高清扫描版】.pdf

    《C++ Primer 第四版》是著名的C++编程语言教程,由Stanley B. Lippman、Josée Lajoie和Barbara E. Moo三位作者共同撰写。该书自出版以来,已成为广大程序员学习C++的必备书籍。第四版对前三版的内容进行了彻底的...

    C++Primer4th(英文版)

    非常不错的英文版PDF!C++primer与TheC++ProgrammingLanguage(已上传)被誉为C++界的倚天屠龙!值得一看,本人也在研究,大家可以一起讨论!英文原版的是perfect的!!另有习题解答

    C++ Primer Plus-第6版-附录文件和源代码

    C++ Primer Plus-第6版-附录文件和源代码

    C++Primer4th第四版中文版

    标题《C++Primer4th第四版中文版》表明这是一本关于C++语言学习的经典教材。描述中提到,它以教程的形式对C++语言进行清晰的讲解,辅以丰富的示例和学习辅助手段。C++ Primer被广泛认为是学习C++的权威之作,尤其...

    C++Primer4th第四版中文版.pdf

    - **C++语言的三部分组成**:低级语言元素(源于C)、高级语言特性(用于定义自定义数据类型和组织大型项目)、以及标准库。 - **创新的教学顺序**:先讲解标准库和语言基础,然后逐步深入到高级语言特性和自定义...

    c++ primer 4th 中英对照

    在C++ Primer 4th版中,你会学到如何使用C++的基本语法,包括变量声明、数据类型、运算符、流程控制(如if、switch、循环等)、函数的定义和调用。书中还详细介绍了C++中的指针和引用,这是理解C++内存管理和低级...

    C++ Primer 4th及习题解答

    《C++ Primer 4th》是一本广受欢迎的C++编程教材,由Lippman、Lajoie和 Moo三位专家合著。这本书以其深入浅出的讲解方式和丰富的实例,深受初学者和经验丰富的程序员的喜爱。它覆盖了C++语言的基础、高级特性,以及...

    C++Primer 习题解答(第4版)--绝对完整版

    3. **模板与泛型编程**:C++ Primer 习题解答详尽解释了模板的概念,包括函数模板和类模板,以及模板特化和模板元编程。泛型编程让代码具有更好的可复用性,是C++程序员必须掌握的技术。 4. **标准库的使用**:书中...

    C++Primer 第4版-习题解答(完整版)+源码

    这个是C++Primer 第4版习题解答(完整版)+源码。 C++ Primer 第四版(中英文对照阅读版).chm下载地址:http://download.csdn.net/source/3116404。

    c++ primer 4th 中英文对照版

    C++ Primer, Fourth Edition, provides a comprehensive introduction to the C++ language. As a primer, it provides a clear tutorial approach to the language, enhanced by numerous examples and other ...

    c++ primer(5th)非扫描版+中文扫描版习题集

    c++primer清晰非扫描版本,学习c++的经典版本,c++基本语法,c++11新特性!(文件较大百度网盘链接和密码)

    C++ Primer 4th 习题解答

    《C++ Primer 4th 习题解答》将详细介绍如何定义类,包括数据成员、成员函数、构造函数和析构函数的使用。同时,还会讨论对象的创建与销毁、对象的复制以及访问控制(public、private和protected)。封装、继承和...

Global site tag (gtag.js) - Google Analytics