The C++ Programming Language 读书笔记1

    快找工作了,恶补C++ 

    1, string的那一章大概浏览了一下, 对一些string类型相关操作有一定的了解, 比如不能用字符直接对string 类型赋值.

     string s1 = 'c'; // 非法

    印象比较深刻的就是这么多了.

    2, 看完第20章的string后, 觉得自己对类的概念很模糊, 很多概念不够清楚, 再开始看第10章 类.

    类 由类名称,数据成员及成员函数组成, 其实就相当于C语言中的struct, 如:

    class ca{

        int a, b;

    public:

        f();

    };

    struct sa {

        int a, b;

    public:

        f();

    };

    只是, 在class中, 数据成员int a, b被默认定义成私有数据成员, 不能提供类似ca.a;这样的直接访问,必须通过定义相应该的公有成员函数来进行访问, 体现了C++语言的class中数据类型的封装性. class中将所有数据封装起来,通过提供一组公有成员函数来操作.

    在struct 中,数据成员int a, b默认定义成公共数据成员, 可以直接通过sa.a, sa.b来访问.

    类成员初始化列表, 如下:

    ca::ca(int aa, int bb):a(aa), b(bb) { }  成员初始化列表的好处在于直接把参数的一份拷贝赋给成员, 如果是用下面这种方法,

    ca::ca(int aa, int bb)

    {

        a = aa;

        b = bb; 

    }

    则会先给a, b 赋一个默认值, 再把参数的拷贝赋给a, b; 假如a, b都是string 类型,则第二种方法会先将一个空串""赋给a,再把aa的一份拷贝赋给a, 如果是用第一种方法,则直接将aa的拷贝赋给a, 初始化列表的效率就高一点.照猜想,产生的中间代码也会少.

    带const的成员函数, 如果成员函数不需要修改数据成员, 则应该将函数声明为如下形式,

    void f() const;

    数据成员与成员函数, 每个类对象都有自己的数据成员, 各个对象共享一套成员函数. 例如:

    void ff()

    {   

        ca a;

        ca b;

        a.f();

        b.f();

    }

    a.f()与b.f()调用的都是存放在同一个地方的同一个函数. 不过该函数所操作的数据是属于各对象的.

    static 数据成员, 静态数据成员在程序运行期间只定义一次, 同一个类的各个对象共享同一个static数据成员,  例如:

    class ca {

    int a, b;

    static int c;

    };

    int ca::c = 0;

    static 数据成员不能像普通数据成员那样通过类的构造函数进行初始化, 而要在类外进行初始化, 在main()函数运行之前, 类的static 数据成员就已经完成了初始化.

    static const int a = 1; 这个语句可以出现在类中, 但是static int a = 1; const int a = 1; static const float a = 1.1; 均不能出现在类定义中. 只有static const int类型能在类中进行初始化.

    构造函数与析构函数, 构造函数功能是对类中数据成员进行初始化, 申请资源, 营造好类的作用环境. 析构函数则销毁这个环境,回收资源.

    类在定义一个对象的时候,就自动调用构造函数. 如:

    void f()

    {

        ca ak;

        ca bk;

    }

    构造函数先构造好ak的运行环境,再构造bk的运行环境; 在函数结束后, 先调用析构函数销毁bk的运行环境,再销毁bk的运行环境.

    也就是,先顺序调用构造函数,再逆序调用析构函数.

    可能我的理解有些是不正确的, 诚请看到此的朋友不吝指正.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值