C++ 类

1、类
1.1构造函数
减少相关函数的数目的一种方式是采用默认参数。
Data(int dd = 0, int mm = 0, int yy = 0);
1.2静态成员
如果一个对象是类的一部分,但却不是该类的各个对象的一部分,它被称为static静态成员。
一个需要访问类成员,然而却并不需要针对特定对象去调用的函数,被称为一个static成员函数。
1.3类对象的复制
复制构造函数X::X(const X&)
复制赋值X& operator=(const X&)
在复制赋值里需要检查自我赋值。
1.4常量成员函数
将那些不修改对象值的成员函数做成const成员函数。
如果在一个类的外面定义它的const成员函数,需要给出const后缀。
对于const或者非const对象都可以调用const成员函数,而非const成员函数则只能对非const对象调用。
1.5自引用
可以让一组相关的更新函数返回一个到被更新的引用,以使对于对象的操作可以串接起来。
return *this;

2、高效的用户定义类型
2.1一组经典的操作
[1]一个构造函数描述这个类型的对象/变量应该如何初始化
[2]一组函数使用户可以查看X,这些函数标记为const
[3]一组函数使用户可以操作X。
[4]一组隐式定义的函数,是X可以自由地复制。
[5]一个类,Bad_X,用于通过异常报告出错误情况。

3、对象
3.1类对象作为成员
成员的构造函数将在容器类本身的构造函数体执行之前首先被执行。这些构造函数按照成员在类中声明的顺序执行。
如果某个成员的构造函数不需要参数,在初始化表里就无须提到这个成员。
对于那些const成员和引用成员而言,对成员的初始化是必不可少的。
3.2成员常量
对于静态整型成员,可以给它的声明加上一个常量表达式作为初始化。
static const int cl = 7;
当用到某个被初始化的成员,而且需要将它作为对象存入存储器时,这个成员就必须在某处有(惟一的)定义。
const int X::cl;
const int *p = & X::cl;
3.3数组
数组和对象的释放
X *t1 = new X;
X *t2 = new X[2];
delete t1;
delete[] t2;
也可以使用vector
vector<X> *pl = new vector<X>(10);
delete p1;
3.4局部静态变量
在第一次调用的时候初始化。如果第一次调用没有初始化,第二次调用也不会进行初始化。
3.5非局部存储
用第一次开关去缓和顺序依赖性问题。
使用这种技术依赖于一个事实:无构造函数的静态分配对象将自动地初始化为0;
class Zlib{
    static bool initialized;
    static void initialize(){/* 初始化 */ initialized = true;}
  public
    //无构造函数
    void f()
    {    
       if (initialized == false) initialize();
     //...
    }
  //...
};
3.6联合
联合可以有成员函数,但不能有静态成员。
编译器无法知道被使用的是联合的哪个成员,也就是说无法知道在联合中的对象的类型。因此联合不能包含构造函数或析构函数的成员。

阅读更多
个人分类: C++程序设计语言
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭