zoukankan      html  css  js  c++  java
  • 第十九章 代码重用 6按别名传递book对像 简单

    // 6按别名传递book对像
    //由于在创建一个book类对像时会创建3个String类对像,因此,假如我们按值传递一个book类对像给某个函数,那么对系统的消耗是相当可观的,接下来的例子将演示按值与按别名传递book类对像的不同
    
    #include "String.h"
    class Book
    {
    public:
    	Book();
    	~Book(){ cout<<"Book类的析构函数执行...."<<endl;}
    	Book(char*, char*, char*, float);
    	//不能修改返回值,在函数内也不能修改,也不想调用复制构造函数,按地址传递
    	const String& GetTitle()const{ return title; }
    	const String& GetAuthor()const{ return author; }
    	
    	String& GetAuthor(){ return author; }
    
    	const String& GetNumber()const{ return number; }
    	float GetPrice()const{ return price; }
    
    	void SetTitle(const String& s){ title = s; }
    	void SetAuthor(const String& s){ author = s; }
    	void SetNumber(const String& s){ number = s; }
    	void SetPrice(float p){ price = p; }
    
    	void SetTotal(const String&t, const String&a,const String&n, float p)
    	{
    	      title = t;
    		  author = a;
    		  number = n;
    		  price = p;
    	}
    	
    private:
        String title;  //书名
    	String author; //作者
    	String number; //编号
    	float price;   //价格
    };
    //创建一本空图书
    Book::Book():title(""),author(""),number(""),price(0){
    	 cout<<"Book类的不带参数构造函数执行...."<<endl;
     
    };
    //创建一本有所有内容的图书
    Book::Book(char* t, char* a, char* n, float p)
    {
    	cout<<"Book类的带参数构造函数执行...."<<endl;
    	title = t; author=a; number = n; price=p;
    }
    
    void print1(Book one);
    void print2(const Book &two);
    
    int main()
    {
    	Book love("love","Jack","001",35.5);
    	cout<<"调用print1函数"<<endl;
    	print1(love);
    	cout<<"调用print2函数"<<endl;
    	print2(love);
    	//这个例子中看出,按值传递一个book类对像,系统开销是相当大的,而按引用传递一个book类对像则几乎不产生系统开销
        return 0;
    }
    
    void print1(Book one)
    {
    	cout<<"书名:"<<one.GetTitle()<<" 作者:"<<one.GetAuthor()<<" 编号:"<<one.GetNumber()<<" 价格"<<one.GetPrice()<<endl;
    };
    
    void print2(const Book &two)
    {
    	cout<<"书名:"<<two.GetTitle()<<" 作者:"<<two.GetAuthor()<<" 编号:"<<two.GetNumber()<<" 价格"<<two.GetPrice()<<endl;
    }
    

      

  • 相关阅读:
    burpsuite 关于部分https抓包失败原因
    记一次对汉明科技无线运营系统审计的过程
    nmap script 总结
    python argparse总结
    unix 密码破解,zip破解总结
    python 反向shell后门
    结构体的不完整声明
    [转载][来自csdn]RTS和CTS是什么意思?
    博客开通成功
    system系统调用返回值判断命令是否执行成功
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2700895.html
Copyright © 2011-2022 走看看