C++学习笔记(二)

来源:互联网 发布:政府网络舆论互动交流 编辑:程序博客网 时间:2024/05/29 02:41

类:

Class 类名{

Private:

Public:

Protected:

};

 

构造函数:

1.      无参构造函数:函数体为空时 = 默认构造函数(缺省构造函数),全局对象或静态对象调用默认构造函数,数据项自动初始化为零

2.      复制构造函数(拷贝构造函数):X(const X&  x),称作同类对象的位模式拷贝。

出现的情形:1.X  b(c),c为X的一个实体;2:b = c;3,作为函数的形参(值传递,构造形参)4,作为函数X  foo(…)的返回值时(实际上是返回了一个匿名对象)

 

如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝,反之,没有重新分配资源,就是浅拷贝(导致delete两次,两个指针指向同一份资源,却删了两次)。

3.类型转换构造函数:X(T& …)

4.  一般构造函数:

 

Struct: 初始化列表来初始化,Class只有当其没有私有数据成员,没有构造函数,没有虚函数,不是派生类时才能使用。

 

This指针:作为隐含参数自动传给成员函数的,为const* 类型,将this指针声明为指向常量的常量指针:在成员函数后加const ,使之成为const成员函数,此时成员函数内不能改变对象的数据了。

 

静态成员是属于类的成员:static意为是该类所有对象共享的数据成员,非为静态存储类。

静态成员数据只有一份;必须在类外初始化,说明公有时,用类名::加以指定,其他使用与普通数据成员一致。

静态成员函数,没有隐式的this指针(属于一个类),只能用静态数据成员

 

友元:出于效率的目的,每次调用成员函数来访问对象的私有数据成员开销太大。

友元函数:无this,必须传参,允许将一个类的成员函数说明为另一个类的友元(没试过),也可以是一个类(该类的每个成员函数均可访问另一个类的成员)。

 

作用域:程序作用域,文件作用域,函数级,类级,块级

 

对象数组:X  ar[2] = {X(…),X(…)}(匿名对象);有单个参数的构造函数,可使用{1,1}

                   按序号调用构造函数,撤销时相反。

 

成员对象和容器类(含有另一个类的对象作为类的成员时),需在构造函数时用一个初始化参数表来完成(编译器不提供)。初始化顺序:成员对象的声明顺序,再是类,析构时相反,栈。

 

C++可定义为自动对象,静态对象,外部对象和动态对象,

 

静态对象:内部静态对象,外部静态对象。

 

0 0
原创粉丝点击