Boolan c++笔记_1

1. class有两种
  • 不含有指针
  • 含有指针
2. 基于对象 与 面向对象
3. c++语言 与 c++标准库
4. 头文件的布局
#ifndef __COMPLEX__ (防止重复声明)
#define __COMPLEX__
0.前置声明(声明后面要用到的类和全局函数)
1.类声明(class head, class body)
2.class body外面定义成员函数,全局函数
#endif
5.一些细节
  1. 在class body内部定义的是inline函数,但只是给编译器的建议,最终是否inline由编译器决定。在函数定义的时候前面写上inline。
  2. 访问级别:public,private。数据和不对外使用的函数要声明为私有的。
  3. 构造函数:函数名称与类名相同,参数可以有默认值,写为初始化列表效率高(变量赋值两个阶段:初始化:re(r),im(i),赋值在{}中)。
    构造函数可以有多个,overloading(重载)。
    构造函数放在private区,表示不能在外界创建对象,单例模式
  4. 不带指针的函数多半不用写析构函数。
  5. 函数() const {} 加const不改变数据内容。
    外界const对象只能调用const函数,因为不加const修饰函数,编译器会认为这个函数可能改变数据,所以const对象不允许调用非const函数。
  6. 函数参数传递,pass by value VS. pass by reference (to const) 最好都传引用,若变量只有1个或两个字节传值也可以。
  7. 函数返回值,return by value VS. return by reference (to const) 尽量都用引用。
    函数中需要返回的结果放置的位置:
    (1)放在函数内部创建的对象(生命周期只在函数里)里,这时必须return by value。
    (2)放在函数传入的参数里,这时都可以return by reference。
  8. friends(友元):可以访问private成员。
  9. 相同class的各个objects互为friends
    例如.
    class complex
    {
    public:
         int func(const complex& param)
         { return param.re +  param.im; }
    private:
         double re, im;
    };
    ...
    {
         complex c1(2,1);
         complex c2;
         c2.func(c1);
    }
  10. 操作符重载
    (1)作为成员函数 this作为函数参数可以隐藏。
    __doapl( do assaignment plus )
    return by reference 语法分析:传递者无需知道接收者是以reference形式接收。
    eg. c2 += c1; c1是传递者,c2是接收者。
    c3 += c2 += c1;
    (2)作为非成员函数
    返回值一定要是value,因为返回的必定是个local object。
    临时对象 定义
    typename (..); 不需要写对象名 eg. complex(..,..); , int(7);
    ostream& operator << (ostream & os, const complex &x)  //返回值可以改为&。
    {
     return os << '(' << real(x) << ',' << imag(x) << ')';
    }
    cout << c1 << conj(c1); 级联输出,所以返回不能是void.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值