C++ Primer 5 CH7 类】的更多相关文章

7.1 定义抽象数据类型 定义和声明成员函数的方式与普通函数差不多,成员函数的声明必须在类的内部,定义可以在类的内部或外部.作为接口组成部分的非成员函数的声明和定义都在类的外部. 定义在类内部的函数是隐式的 inline 函数. 当我们调用成员函数时,实际上是替某个对象调用它.成员函数通过 this 的隐式参数来访问调用它的那个对象. 任何对类成员的直接访问都被看作 this 的隐式引用. this 是一个常量指针,不允许改变 this 保存的地址. 使用 const 的成员函数被称作常量成员函…
目录 存储类 作用域 链接 存储时期 自动变量 寄存器变量 具有代码块作用域的静态变量 具有外部链接的静态变量 extern关键字 具有内部链接的静态变量 多文件 存储类 C为变量提供了5种不同的存储类型: 自动 寄存器 具有代码块作用域的静态 具有外部链接的静态 具有内部链接的静态 不同角度描述变量: 存储时期 变量在内存中保留的时间 变量作用域(Scope)以及它的链接(Linkage) 变量的作用域和链接一起表明程序的哪些部分可以通过变量名来访问该变量 不同的存储类提供了变量的作用域.链接…
1.在类内部,声明成员函数时必需 的,而定义成员函数则是可选的.在类内部定义的函数默认为inline. 2.const成员函数不能改变其所操作的对象的数据成员.const必须同时出现在声明和定义中,若只出现其中一处,就会出现一个编译时错误. 3.显示指定inline成员函数 在类内部定义的成员函数默认是inline.显示指定inline成员函数的办法有3种: (1)类定义体内部指定inline,作为其声明的一部分. (2)类定义体外部的函数定义上inline (3)类定义体内和外均指定为inli…
1.嵌套类是一个独立的类,与外层类基本没什么关系.特别的是,外层类的对象和嵌套类的对象是相互独立的.在嵌套类的对象中不包含任何外层类定义的成员,在外层类的对象中也不包含任何嵌套类定义的成员. 2.嵌套类在其外层类中定义了一个类型成员.和其他成员类似,该类型的访问权限由外层类决定. class external { public: int m_id; // internal里无法使用这个变量 class internal; }; class external::internal { public:…
1.C++语言并未定义任何输入输出语句,取而代之,包含了一个全面的标准库来提供IO机制. 由上图能够知道,I/O操作的基类是ios_base,各个类的用途例如以下: <iostream> istream    从流中读取数据 ostream   向流中写数据 iostream  对流进行读写操作.派生于istream和ostream <fstream> ifstream    从文件里读取数据.派生于istream ofstream   向文件里写数据,派生于ostream fst…
1 - Class Members Revisited 2 - Functions That Return *this 3 - Class Types 4 - Friendship Revisited [Class Members Revisited] 1.Defining a Type Member: #include <iostream> #include <string> using namespace std; class Screen { public: using po…
目录 存储类说明符 存储类和函数 动态分配内存 malloc函数 free函数 calloc函数 动态分配内存的缺点 C类型限定关键字 constant定义全局常量 volatile关键字 restrict关键字 @ 存储类说明符 C中存储类说明符共有5个,为auto register static extern typeddef,最后一个关键字typedef与内存存储无关. 规定:不可以在一个声明中使用一个以上存储类说明符. 存储类说明符用来确定变量的存储类型. 存储类和函数 函数的存储类有两…
C++ Primer笔记 ch2 变量和基本类型 声明 extern int i; extern int i = 3.14;//定义 左值引用(绑定零一变量初始值,别名) 不能定义引用的引用:引用必须被初始化:类型严格匹配:不能绑定字面值/计算结果:无法二次绑定 int i=4; int &r=i; 指针 本身是对象,允许赋值和拷贝:无需定义时赋初值:类型严格匹配 int *ip1, *ip2; int ival = 42; int *p = &ival; *p = 0; cout <…
今天看c++ primer关于派生类到基类转换的可访问性,看的很晕,看了下面的文章恍然大悟: http://www.2cto.com/kf/201403/283389.html C++ primer第四版15.3小节有这样一段话: 如果是 public 继承,则用户代码和后代类都可以使用派生类到基类的转换.如果类是使用 private 或 protected 继承派生的,则用户代码不能将派生类型对象转换为基类对象.如果是 private 继承,则从 private 继承类派生的类不能转换为基类.…
1.避免重复定义和初始化 <<c++ primer>>说在类外定义和初始化是保证static成员变量只被定义一次的好方法. 但,为什么static const int就可以在类里面初始化呢? 想起C中一个函数里定义一个static变量是为了保证只初始化一次. 那么,是否可以这样理解: static数据成员在类外定义和初始化是为了保证只被定义和初始化一次,这样编译器就不必考虑类的函数里面第一个对static变量的’=’操作是赋值还是初始化了. static const int可以在类…