C++ Primer  chapter 1

  1. main函数的返回值在正常情况下为0,程序错误时可能返回其他的值 。
  2. 在编译程序时,命令行只需要包含源文件的参数
    //test.hpp
    void test()
    {std::cout<<"test"<<std::endl;
    }
    //main.cc
    #include"test.hpp"
    int main()
    {test();return 0;
    }g++ main.cc -o main在编译main.cc程序时会自动加上头文件。
    上一段中的编译得到的程序为 main ,命令行中输入 ./main 便可以执行这段代码。./ 代表当前的命令行文件路径。
    如果不添加其他参数 只有g++ main.cc会生成a.out默认文件
  3. 头文件的后缀可以为 .h .hpp ,源文件后缀可以是.cc  .cpp .cxx .C等
  4. iostream库包含两个基本的类型 istream和 ostream,表示输入与输出流。其中包括了4个标准输入输出流
    cin    标准输入 
    cout 标准输出
    cerr  输入警告和错误信息,也叫做标准错误 
    clog  程序运行时输出一般性的信息
  5. 附程序代码
    //Sales_item.h
    #ifndef SALES_ITEM_H_
    #define SALES_ITEM_H_#include<iostream>
    #include<string>class Sales_item
    {//四个友元函数的定义,二元运算符号,返回的并不是Sales_item对象//运算符的重载,注意const修饰//友元函数并不是类中的函数,而是外部函数,可以直接调用类中的函数以及变量friend std::istream& operator>>(std::istream&,Sales_item&);friend std::ostream& operator<<(std::ostream&,const Sales_item&);friend bool operator <(const Sales_item&, const Sales_item&);friend bool operator == (const Sales_item&,const Sales_item&);
    private:std::string bookNo;unsigned units_sold = 0;double revenue = 0.0;
    public:Sales_item& operator+=(const Sales_item&);std::string isbn() const {return bookNo;}//ISBNdouble avg_price() const;
    };
    //重载+,先定义后使用
    Sales_item operator+(const Sales_item& lhs,const Sales_item& rhs);//inline表示这个函数为内联函数,编译之前直接替换,会造成代码膨胀
    inline bool compareIsbn(const Sales_item& lhs,const Sales_item& rhs)
    {return lhs.isbn() == rhs.isbn();
    }//因为==已经是友元函数,所以!=函数里直接使用==函数就可以,不要再将其设置为友元函数
    inline bool operator!=(const Sales_item& lhs,const Sales_item& rhs)
    {return !(rhs==lhs);
    }//成员函数Sales_item& Sales_item::operator+=(const Sales_item& rhs)
    {units_sold+=rhs.units_sold;revenue += rhs.revenue;return *this;
    }
    double Sales_item::avg_price() const
    {if(units_sold)return revenue/units_sold;return 0;
    }Sales_item operator+(const Sales_item& lhs,const Sales_item& rhs)
    {Sales_item ret(lhs);ret+=rhs;return ret;
    }
    //友元函数
    std::istream& operator>>(std::istream& in,Sales_item& s)
    {//可以把这里的in 看成cin,其实cin也是一个类,其中>>被重载double price;//连续输入3个变量//这里为友元函数  可以直接调用s的所有成员函数/变量in>>s.bookNo>>s.units_sold>>price;//结合性为自左向右if(in)//如果in合法s.revenue = s.units_sold*price;elses = Sales_item();//输入输出流的重载函数中返回的是 输入输出对象return in;
    }
    std::ostream& operator<<(std::ostream& out,const Sales_item& s)
    {out<<s.isbn()<<" "<<s.units_sold<<" "<<s.revenue<<" "<<s.avg_price()<<std::endl;return out;
    }
    inline bool operator==(const Sales_item& lhs,const Sales_item& rhs)
    {return lhs.units_sold == rhs.units_sold &&lhs.revenue == rhs.revenue &&lhs.isbn() == rhs.isbn();
    }
    #endif

C++ Primer 读书笔记及知识点延伸 chapter1相关推荐

  1. C++ Primer 读书笔记及知识点延伸 chapter2

    C++ Primer 读书笔记及知识点延伸 chapter2 wchar_t宽字符,char16_t  char32_t Unicode字符 ,long long C++11新增加 符号类型前面加上u ...

  2. C++ Primer 读书笔记04

    C++ Primer 读书笔记04 关联容器 pair 动态内存 静态内存 栈内存 智能指针 shared_ptr 直接管理内存 new 空悬指针 智能指针陷阱 unique_ptr weak_ptr ...

  3. 数学之美》读书笔记和知识点总结(一)

    <数学之美>读书笔记和知识点总结(一) 早在前几个月我在台湾的时候,就听说<数学之美>是一本非常不错的书,也正好是我喜欢的类型,一直想买.回到北京之后的第一件事就是把我这半年积 ...

  4. C++ Primer读书笔记(从后向前看)

    (从后向前看) 标题:重载函数再论 重载函数是C++提出来的概念,但是在C中却未必没有.比如"1+3"和"1.0+3.0",虽然都是加法,做的却不是同的操作:编 ...

  5. C++ Primer读书笔记

    (从后向前看) 标题:重载函数再论 重载函数是C++提出来的概念,但是在C中却未必没有.比如"1+3"和"1.0+3.0",虽然都是加法,做的却不是同的操作:编 ...

  6. c++primer读书笔记

    c++全局变量无声明.多次定义会冲突.利用命名空间 c++四种cast操作符的区别 1.static_cast,支持子类指针到父类指针的转换,并根据实际情况调整指针的值,反过来也支持,但会给出编译警告 ...

  7. 【C++ Primer读书笔记】第1章 - 开始

    读书笔记,后续会不断补充修改,欢迎交流.

  8. C++ Primer 读书笔记 (1)

    我的<C++ Primer>扉页记着购书的日期和地点:C++ Primer 2009.11.28购于西区求索.那时对于这本厚书一直心怀敬畏,仿佛是眼前的一座大山.那时,虽然已经大四,但是对 ...

  9. C++入门复习指南,C++Primer读书笔记

    1.碎碎念 因为高中的缘故差不多一年多没写代码了,最近备考CCPC,发现很多东西都忘记了,所以简要复习一下. 我的C++启蒙来自C Primer PLUS,具体记不清了,大概五六年前甚至更早吧,那时候 ...

最新文章

  1. 没有这 29 款插件的 Chrome 是没有灵魂的!
  2. 深度学习--说一说卷积和池化
  3. 书籍记录——C++大学基础教程(第五版)
  4. Android Tcp操作
  5. 包装类 || 装箱与拆箱
  6. 桥本有菜java,深入浅出Extjs4.1.1(ExtJS组件、ExtJS对Ajax支持、ExtJS布局)配在线选课系统实战...
  7. 网易逆水寒服务器型号,从服务器爆满到无人问津的经典游戏
  8. vue开源Element UI表单设计及代码生成器
  9. php order不管用,php – WooCommerce – get_order()不起作用,它返回零
  10. 投简历:求求你给我个机会「小废物招聘全记录①」
  11. k-means 及其改进 数库
  12. java中希腊字母表_希腊字母,希腊字母
  13. 手把手教你为 中文PDF电子书自动批量添加书签/目录, 彻底告别手动添加书签的烦恼
  14. 美光称对华为恢复部分芯片出货 股价一度上涨10%
  15. 【quick-cocos2d-lua】 疯狂牛牛
  16. 形状超链接html,ppt中标注形状超链接怎么做
  17. word中快速确认字体颜色的方法
  18. 设计模式 -- 桥接模式(Bridge)
  19. Java给字符串数组动态赋值
  20. 广州蓝景分享—Web前端开发培训机构如何选择

热门文章

  1. android 绘制坐标系(雷达探测界面)
  2. 使用Python下载蓝奏云文件
  3. 2022-2027年中国电动汽车充电站及充电桩行业市场调研及未来发展趋势预测报告
  4. comsol如何定义狄利克雷边界_在变分问题中指定边界条件和约束
  5. 【医学图像处理】X-ray 数字射线成像
  6. 华为HMS对谷歌GMS,有多大胜算?
  7. UE4制作多语言游戏(本地化功能详解)
  8. 微信小程序 小程序全局数据共享(笔记)
  9. python爬取某站上海租房图片
  10. 宠物经济:吃、用、病、葬都是生意