• C++ Primer chap7


    /*
    第七章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 << "
    ";
    //    myScreen.display(std::cout);
    //    std::cout << "
    ";
    //
    //    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 << "
    2. use std::string as parameter: " << endl;
    //    cout << "----------------" << endl;
    //    Sales_data s2("CPP-Primer-5th");
    //
    //    cout << "
    3. complete parameters: " << endl;
    //    cout << "----------------" << endl;
    //    Sales_data s3("CPP-Primer-5th", 3, 25.8);
    //
    //    cout << "
    4. 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++ Null 指针的使用
    Canal相关
    安装调试MySql经常遇到的问题
    Mysql 常用操作
    asp.net web项目 绑定ip地址运行方式
    Nginx for windows 安装部署
    Nginx 配置文件介绍
    Nginx 代理静态网站
    RabbitMQ windows下的安装与配置
    ES kibana 常用指令
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/6101656.html
Copyright © 2020-2023  润新知