C++ Primer 读书笔记及知识点延伸 chapter1
C++ Primer chapter 1
- main函数的返回值在正常情况下为0,程序错误时可能返回其他的值 。
- 在编译程序时,命令行只需要包含源文件的参数
//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默认文件
- 头文件的后缀可以为 .h .hpp ,源文件后缀可以是.cc .cpp .cxx .C等
- iostream库包含两个基本的类型 istream和 ostream,表示输入与输出流。其中包括了4个标准输入输出流
cin 标准输入
cout 标准输出
cerr 输入警告和错误信息,也叫做标准错误
clog 程序运行时输出一般性的信息 - 附程序代码
//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相关推荐
- C++ Primer 读书笔记及知识点延伸 chapter2
C++ Primer 读书笔记及知识点延伸 chapter2 wchar_t宽字符,char16_t char32_t Unicode字符 ,long long C++11新增加 符号类型前面加上u ...
- C++ Primer 读书笔记04
C++ Primer 读书笔记04 关联容器 pair 动态内存 静态内存 栈内存 智能指针 shared_ptr 直接管理内存 new 空悬指针 智能指针陷阱 unique_ptr weak_ptr ...
- 数学之美》读书笔记和知识点总结(一)
<数学之美>读书笔记和知识点总结(一) 早在前几个月我在台湾的时候,就听说<数学之美>是一本非常不错的书,也正好是我喜欢的类型,一直想买.回到北京之后的第一件事就是把我这半年积 ...
- C++ Primer读书笔记(从后向前看)
(从后向前看) 标题:重载函数再论 重载函数是C++提出来的概念,但是在C中却未必没有.比如"1+3"和"1.0+3.0",虽然都是加法,做的却不是同的操作:编 ...
- C++ Primer读书笔记
(从后向前看) 标题:重载函数再论 重载函数是C++提出来的概念,但是在C中却未必没有.比如"1+3"和"1.0+3.0",虽然都是加法,做的却不是同的操作:编 ...
- c++primer读书笔记
c++全局变量无声明.多次定义会冲突.利用命名空间 c++四种cast操作符的区别 1.static_cast,支持子类指针到父类指针的转换,并根据实际情况调整指针的值,反过来也支持,但会给出编译警告 ...
- 【C++ Primer读书笔记】第1章 - 开始
读书笔记,后续会不断补充修改,欢迎交流.
- C++ Primer 读书笔记 (1)
我的<C++ Primer>扉页记着购书的日期和地点:C++ Primer 2009.11.28购于西区求索.那时对于这本厚书一直心怀敬畏,仿佛是眼前的一座大山.那时,虽然已经大四,但是对 ...
- C++入门复习指南,C++Primer读书笔记
1.碎碎念 因为高中的缘故差不多一年多没写代码了,最近备考CCPC,发现很多东西都忘记了,所以简要复习一下. 我的C++启蒙来自C Primer PLUS,具体记不清了,大概五六年前甚至更早吧,那时候 ...
最新文章
- 没有这 29 款插件的 Chrome 是没有灵魂的!
- 深度学习--说一说卷积和池化
- 书籍记录——C++大学基础教程(第五版)
- Android Tcp操作
- 包装类 || 装箱与拆箱
- 桥本有菜java,深入浅出Extjs4.1.1(ExtJS组件、ExtJS对Ajax支持、ExtJS布局)配在线选课系统实战...
- 网易逆水寒服务器型号,从服务器爆满到无人问津的经典游戏
- vue开源Element UI表单设计及代码生成器
- php order不管用,php – WooCommerce – get_order()不起作用,它返回零
- 投简历:求求你给我个机会「小废物招聘全记录①」
- k-means 及其改进 数库
- java中希腊字母表_希腊字母,希腊字母
- 手把手教你为 中文PDF电子书自动批量添加书签/目录, 彻底告别手动添加书签的烦恼
- 美光称对华为恢复部分芯片出货 股价一度上涨10%
- 【quick-cocos2d-lua】 疯狂牛牛
- 形状超链接html,ppt中标注形状超链接怎么做
- word中快速确认字体颜色的方法
- 设计模式 -- 桥接模式(Bridge)
- Java给字符串数组动态赋值
- 广州蓝景分享—Web前端开发培训机构如何选择