/*
第七章7.1;
*/ //#include<iostream>
//#include<string>
//using std::cin;
//using std::cout;
//using std::string;
//using std::endl;
//
//struct Sales_data{
// string bookNo;
// unsigned units_sold = 0;
// double revenue = 0.0;
//};
//
//int main()
//{
// Sales_data total;
// if (cin >> total.bookNo >> total.units_sold >> total.revenue){
// Sales_data trans;
// while (cin >> trans.bookNo >> trans.units_sold >> trans.revenue){
// if (total.bookNo == trans.bookNo){
// total.units_sold += trans.units_sold;
// total.revenue += trans.revenue;
// }
// else{
// cout << total.bookNo << " " << total.units_sold << " " << total.revenue << endl;
// total = trans;
// }
// }
// cout << total.bookNo << " " << total.units_sold << " " << total.revenue << endl;
// }
// else{
// std::cerr << "No data?!" << std::endl;
// return -1;
// }
// return 0;
//} /*
第七章7.3;
*/ //#include<iostream>
//#include"ex7_02.h"
//
//using std::cout;
//using std::cin;
//using std::endl;
//
//int main()
//{
// Sales_data total;
// if (cin >> total.bookNo >> total.units_sold >> total.revenue){
// Sales_data trans;
// while (cin >> trans.bookNo >> trans.units_sold >> trans.revenue){
// if (total.isbn() == trans.isbn()){
// total.combine(trans);
// }
// else
// {
// cout << total.bookNo << " " << total.units_sold << " " << total.revenue;
// total = trans;
// }//逻辑要清楚;
// }
// cout << total.bookNo << " " << total.units_sold << " " << total.revenue;
// }
// else{
// std::cerr << "No data!?"<<endl;
// return -1;
// }
//
// return 0;
//} /*
第七章7.7;
*/ //#include "ex7_06.h"
//
//int main()
//{
// Sales_data total;
// if (read(std::cin, total))
// {
// Sales_data trans;
// while (read(std::cin, trans)){
// if (total.isbn() == trans.isbn()){
// total.combine(trans);
// }
// else{
// print(std::cout, total);
// total = trans;
// }
// }
// print(std::cout, total);
// }
// else
// {
// std::cerr << "No data?!" << std::endl;
// return -1;
// }
// return 0;
//} ///*
//第七章7.11;
//*/
//
//#include "ex7_11.h"
//int main()
//{
//
// //编译器支持的情况下;
// Sales_data item1;//创建对象,就会调用构造函数;
// print(std::cout, item1) << std::endl;//其实输出中有一个空字符串;
//
// Sales_data item2("ISBI00001");//创建不对的对象,尝试调用不同的构造函数;
// print(std::cout, item2) << std::endl;
//
// Sales_data item3("ISBI00001", 2, 25.0);
// print(std::cout, item3) << std::endl;
//
// Sales_data item4(std::cin);
// print(std::cout, item4) << std::endl;
//
//
// return 0;
//} /*
第七章7.11;
*/
//
//#include "ex7_12.h"
//int main()
//{
//
// //编译器支持的情况下;
// Sales_data item1;//创建对象,就会调用构造函数;
// print(std::cout, item1) << std::endl;//其实输出中有一个空字符串;
//
// Sales_data item2("ISBI00001");//创建不对的对象,尝试调用不同的构造函数;
// print(std::cout, item2) << std::endl;
//
// Sales_data item3("ISBI00001", 2, 25.0);
// print(std::cout, item3) << std::endl;
//
// Sales_data item4(std::cin);
// print(std::cout, item4) << std::endl;
//
//
// return 0;
//} /*
第七章7.13;
*/ //#include "ex7_11.h"
//
//#include "ex7_12.h"
//
//
//int main()
//{
// Sales_data total(std::cin);//调用构造函数;
// if (!total.isbn().empty()){
// std::istream& is = std::cin;
// while(is){
// Sales_data trans(is);
// //调用构造函数;类内具有初始化,构造函数;
// //所以while 循环肯定要执行一次;
// if (total.isbn() == trans.isbn()){
// total.combine(trans);
// }
// else{
// print(std::cout, total) << std::endl;
// total = trans;
// }
// }
// }
// else{
// std::cerr << "NO data!?" << std::endl;
// return -1;
// }
// return 0;
//} /*
第七章7.27;
*/ //注意区别,当这些函数的返回类型是或者不是引用类型的时候,他们的返回值的差别,以及为什么; //#include"ex7_27.h"
//
//int main()
//{
// Screen myScreen(5, 5, 'X');
// myScreen.move(3, 0).set('#').display(std::cout);
// std::cout << "\n";
// myScreen.display(std::cout);
// std::cout << "\n";
//
// return 0;
//} //#include "ex7_41.h"
////委托构造函数的执行顺序;
//
//using std::cout;
//using std::endl;
//
//// constructor
//Sales_data::Sales_data(std::istream& is) : Sales_data()
//{
// std::cout << "Sales_data(istream &is)" << std::endl;
// read(is, *this);
//}
//
//// member functions.
//Sales_data& Sales_data::combine(const Sales_data& rhs)
//{
// units_sold += rhs.units_sold;
// revenue += rhs.revenue;
// return *this;
//}
//
//// friend functions
//std::istream& read(std::istream& is, Sales_data& item)
//{
// double price = 0;
// is >> item.bookNo >> item.units_sold >> price;
// item.revenue = price * item.units_sold;
// return is;
//}
//
//std::ostream& print(std::ostream& os, const Sales_data& item)
//{
// os << item.isbn() << " " << item.units_sold << " " << item.revenue;
// return os;
//}
//
//Sales_data add(const Sales_data& lhs, const Sales_data& rhs)
//{
// Sales_data sum = lhs;
// sum.combine(rhs);
// return sum;
//}
//
//
//
//int main()
//{
// cout << "1. default way: " << endl;
// cout << "----------------" << endl;
// Sales_data s1;
//
// cout << "\n2. use std::string as parameter: " << endl;
// cout << "----------------" << endl;
// Sales_data s2("CPP-Primer-5th");
//
// cout << "\n3. complete parameters: " << endl;
// cout << "----------------" << endl;
// Sales_data s3("CPP-Primer-5th", 3, 25.8);
//
// cout << "\n4. use istream as parameter: " << endl;
// cout << "----------------" << endl;
// Sales_data s4(std::cin);
//
// return 0;
//} // print
/*注意调用的先后顺序; * 1. default way:
* ----------------
* Sales_data(const std::string&, unsigned, double)
* Sales_data()
*
* 2. use std::string as parameter:
* ----------------
* Sales_data(const std::string&, unsigned, double)
* Sales_data(const std::string&)
*
* 3. complete parameters:
* ----------------
* Sales_data(const std::string&, unsigned, double)
*
* 4. use istream as parameter:标准输入为参数;先执行默认构造函数,再执行委托构造函数;
* ----------------
* Sales_data(const std::string&, unsigned, double)
* Sales_data()
* Sales_data(istream &is)
*
*/ /*
第七章7.43; 定义一个含有类类型的类的默认构造函数;
*/
//
//#include <vector>
//
//class NoDefault {
//public:
// NoDefault(int i) {}
//};
//
//class C {
//public:
// C() : def(0) {} // define the constructor of C.
//private:
// NoDefault def;
//};
//
//int main()
//{
// C c;
//
// std::vector<C> vec(10);
// return 0;
//} /*
第七章7.52; 聚合类;
*/ //#include"ex7_52.h"
//#include<iostream>
//int main()
//{
// Sales_data item = { "9-999-99-9", 0, 0 };
// std::cout << item.bookNo << std::endl;
//
// return 0;
//} /*
第七章7.55; 是否是字面值常量类;
*/ //#include <string>
//#include <iostream>
//#include <type_traits>
//
//struct Data {
// int ival;
// std::string s;
//};
//
//int main()
//{
// std::cout << std::boolalpha;
// //判断是不是字面值类型的函数!
// std::cout << std::is_literal_type<Data>::value << std::endl;
// // output: false
//}

总结:

还是要多写程序,多做练习。通过实践才能知道自己哪些地方掌握的不好,哪些知识理解的有问题。通过练习才能熟练,才能进一步探究。

另外,通过多看别人写的优秀的代码,养成良好的编程习惯。

2016-11-25

C++ Primer chap7的更多相关文章

  1. C++Primer 5th Chap7 Classes

    this关键字: 在成员函数内部可以直接调用函数的对象的成员(类成员的直接访问看做是对this隐式引用,默认this指向非常量) 例如:string isbn() const{return this- ...

  2. C Primer Plus 学习体会

    本月刚刚开始学习<C primer plus>,之前课上草草学过一遍,讲到指针就结束了.现在重新开始看感觉难度不大只是刚开始接触有些语言细节比较琐碎.学习这一周的体会如下: 诸多前辈推荐的 ...

  3. C++ Primer Plus 第六版笔记

    C++ Primer Plus 第六版笔记 关于对象声明的思考 转自:http://www.cnblogs.com/weiqubo/archive/2009/11/02/1930042.html C+ ...

  4. 《3D Math Primer for Graphics and Game Development》读书笔记2

    <3D Math Primer for Graphics and Game Development>读书笔记2 上一篇得到了"矩阵等价于变换后的基向量"这一结论. 本篇 ...

  5. 《3D Math Primer for Graphics and Game Development》读书笔记1

    <3D Math Primer for Graphics and Game Development>读书笔记1 本文是<3D Math Primer for Graphics and ...

  6. 再读《C++ Primer》——变量和基本类型

    刚上大学那时,几个室友一块买了本<C++ Primer>第4版,看了一遍后就没怎么碰了,偶尔拿出来翻翻,当作工具书使用.后来知道有第5版了,一直觉得内容差不多吧.直到最近,再读其中的一些内 ...

  7. C Primer Plus_第6章_循环_编程练习

    1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...

  8. C Primer Plus_第5章_运算符、表达式和语句_编程练习

    Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; ...

  9. C++Primer 5th 练习 12.19

    这阵子真是太忙了, 连续做了四个课设. 当然这并不能作为好久没写博客的借口, 没写博客的主要原因只有一个: 懒. 最近又开始回顾C++的语法与特性(据说C++就是一门需要反复回顾的语言),以及学习C+ ...

随机推荐

  1. Seek the Name, Seek the Fame - POJ 2752(next运用)

    题目大意:小猫是非常有名气的,所以很多父母都来找它给孩子取名字,因为找的人比较多,小猫为了摆脱这个无聊的工作,于是它发明了一种取名字的办法,它把孩子父母的名字合在一起,然后从这个名字里面找一个前缀,并 ...

  2. Java环境变量的配置及意义

    配置环境:Windows XP 首先是配置参数,这个网站上很多.很多网站上说要配置三个参数,即Path,classpath,JAVA_HOME三个.   简要的介绍一下这三个环境变量. Path使得系 ...

  3. OC类方法和实例方法 及常用的for/in方法

    类方法前面有+,实例方法前面有- 类方法和实例方法的区别在于,类方法不能使用实例变量. 使用类方法主要原因有: 1.类方法的使用不依赖于实例化一个对象,也就是说如果一个功能的实现不需要实例化对象,就可 ...

  4. slides 带手势的图片滑动效果(用于移动终端)

    slidesjs 是基于jQuery开发的一款功能强大,是简单的幻灯片插件,但是需要要应用于移动终端的话,还需要考虑手势滑动时候图片切换功能. 此次,我就在slidesjs基础上扩展了两个swipe属 ...

  5. npm scripts 助力前端开发,实时刷新浏览器

    用browser-sync或者lite-server来监控文件的改变,当文件改变时,就自动刷新浏览器. 用node-sass来实时编译scss文件. 用parallelshell来异步执行npm sc ...

  6. .NET 拼音检索

    微软提供了一个Visual Studio International Pack 组件,可以转换简繁体,或者将汉字转换为拼音以及其他语言的支持. https://www.microsoft.com/zh ...

  7. 简单说明Python中的装饰器的用法

    简单说明Python中的装饰器的用法 这篇文章主要简单说明了Python中的装饰器的用法,装饰器在Python的进阶学习中非常重要,示例代码基于Python2.x,需要的朋友可以参考下   装饰器对与 ...

  8. java编程思想-注解思维导图

  9. ASP.NET中 分析器错误:发现不明确的匹配

    这是一个不好的代码习惯引起的发布后运行时的问题.错误原因为.net2.0无法正确识别服务器控件和变量的大小写区别,但是这个错误只有在iis中体现,在文件系统的调试中没有发生. 错误信息 引发错误的参考 ...

  10. Xml解析之——Java/Android/Python

    Xml解析之——Java/Android/Python 一.Xml文件 test.xml <note> <to>George</to> <from>Jo ...