1. 你的类需要构造函数吗?其访问控制级别怎样? 2. 数据成员需要设计成私有的吗? 3. 需要无参的构造函数吗? 4. 需要析构函数吗?需要设计成虚析构函数吗? 5. 需要复制构造函数吗 如果在构造函数中分配资源,则需要复制构造函数 6. 需要赋值操作符吗? 检查自我赋值 释放旧值, 复制新值 7. 需要定义关系运算符吗? 8. 参数类型需要加上 const 吗? 9. 成员函数需要时 const

Read More

指针和引用都是用来间接访问对象的,他们之间有什么区别呢?何时用指针?何时用引用?为什么? 1. 首先认识到指针可以初始化为NULL而引用则不可以。 一个引用变量必须引用到某个对象上, 而且一旦初始化一个引用后,这个引用只能访问这个对象,而不能重新给该引用赋值到其他对象,即关系一旦建立,就不能解除。 因此当你需要一个变量可以间接访问其他对象时, 你需要使用指针。 因为一个引用必须关联到某个对象, 因为在定义引用时必须初始化:string &rs; // 错误: 引用变量必须初始化string s(“xyzzy”);string &rs = s; // okay, rs引用s 指针没有这个限制:string *ps; // 未初始化的指向string的指针 2.

Read More

A 声明从它的名字开始读取,然后按照优先级顺序依次读取B 优先级从高到底依次是 声明中被括号括起来的那一部分 后缀操作符: 括号()表示这是一个函数,而方括号[]表示这是一个数组 前缀操作符: 星号 * 表示“指向...的指针” C 如果const和(或) volatile关键字后面紧跟类型说明符(如int,long等), 那么它作用于类型说明符,在其他情况下,const和(或)volatile关键字作用于它左边紧邻的指针星号。 例如, 声明 char * const *(*next)();A     首先变量名为“next”, 并注意到它直接被括号括住B.1  把括号里作为一个整体,得出“next是指向…的指针”B     考虑括号外面的东西, 在星号*前缀和()后缀间作选择,根据优先级规则,()优先级较高,所以next是一个函数指针,指向一个返回…的函数B.3  处理前缀“*”, 得出指针所指的内容C     最后把char * const解释为指向字符的常量指针

Read More