• [C++]C++学习笔记(二)


    (一)基本知识

    1. //stock00.h  
    2. #ifndef STOCK00_H_  
    3. #define STOCK00_H_  
    4.   
    5. #include <string>    
    6.   
    7. class Stock  // class declaration  
    8. {  
    9. private:   
    10.     std::string company;  
    11.     long shares;  
    12.     double share_val;  
    13.     double total_val;  
    14.     void set_tot() { total_val = shares * share_val; }  
    15. public:  
    16.     void acquire(const std::string & co, long n, double pr);  
    17.     void buy(long num, double price);  
    18.     void sell(long num, double price);  
    19.     void update(double price);  
    20.     void show();  
    21. };    // note semicolon at the end  
    22.   
    23. #endif  
    24.   
    25.   
    26.   
    27. #include <iostream>  
    28. #include "stock00.h"  
    29.   
    30. void Stock::acquire(const std::string & co, long n, double pr)  
    31. {  
    32.     company = co;  
    33.     if (n < 0)  
    34.     {  
    35.         std::cout << "Number of shares can't be negative; "  
    36.                   << company << " shares set to 0. ";  
    37.         shares = 0;  
    38.     }  
    39.     else  
    40.         shares = n;  
    41.     share_val = pr;  
    42.     set_tot();  
    43. }  
    44.   
    45. void Stock::buy(long num, double price)  
    46. {  
    47.      if (num < 0)  
    48.     {  
    49.         std::cout << "Number of shares purchased can't be negative. "  
    50.              << "Transaction is aborted. ";  
    51.     }  
    52.     else  
    53.     {  
    54.         shares += num;  
    55.         share_val = price;  
    56.         set_tot();  
    57.     }  
    58. }  
    59.   
    60. void Stock::sell(long num, double price)  
    61. {  
    62.     using std::cout;  
    63.     if (num < 0)  
    64.     {  
    65.         cout << "Number of shares sold can't be negative. "  
    66.              << "Transaction is aborted. ";  
    67.     }  
    68.     else if (num > shares)  
    69.     {  
    70.         cout << "You can't sell more than you have! "  
    71.              << "Transaction is aborted. ";  
    72.     }  
    73.     else  
    74.     {  
    75.         shares -= num;  
    76.         share_val = price;  
    77.         set_tot();  
    78.     }  
    79. }  
    80.   
    81. void Stock::update(double price)  
    82. {  
    83.     share_val = price;  
    84.     set_tot();  
    85. }  
    86.   
    87. void Stock::show()  
    88. {  
    89.     std::cout << "Company: " << company  
    90.               << "  Shares: " << shares << ' '  
    91.               << "  Share Price: $" << share_val  
    92.               << "  Total Worth: $" << total_val << ' ';  
    93. }  


    1,类的私有成员变量只能通过类的成员函数去访问,类的成员函数可以通过类对象程序访问
    2,声明类对象 
    Stack Jack;
    类的每个对象都有自己的存储空间,每个对象都有自己的成员变量,但是多个成员变量共享一份成员函数

    (二)类的构造函数和析构函数

    1. Stock::Stock(const string &co,long n,double pr )  
    2. {  
    3.     company = co;  
    4.     if (n < 0)  
    5.     {  
    6.         std::cerr<<"can not be negative";  
    7.         shares = 0;  
    8.     }  
    9.     else   
    10.         shares - n;  
    11.     share_val = pr;  
    12.     set_tot()  
    13. }  


    构造函数在创建类对象的时候调用,构造函数被用来创建对象,而不能被对象调用
    示例:
    Stock flood = Stock("hello",4,6.9);
    或者 Stock flood("hello",4,6.9);
    或者 Stock *pstock = new Stock("hello",4,6.9);
    析构函数用来做清理工作

    1. Stock::~Stock()  
    2. {  
    3.       
    4. }  

    (三)类对象可以互相赋值

    1. Stock Stock1 =Stock("hello",4,6.9);  
    2. Stock Stock2("welcome",4,6.0);  
    3. Stock2 = Stock1;  

    (四)const成员函数 为了保证成员函数不会修改调用的类对象,C++是将const关键字放在函数括号的后面 void show()const;

    (五)this指针 const Stock &topval(const Stock &s)const; 括号内的const是指该函数不会修改被显式的访问的对象 最后面的const是指该函数不会修改被隐式的访问的对象 例:top = Stock1.topval(Stock2);  //Stock2被显式访问,Stock1被隐式访问 this指针指向用来调用成员函数的对象,作为隐藏参数传递给函数 示例程序

    1. const Stock &Stock::topval(const Stock &s)const  
    2. {  
    3.     if(s.total_val > total_val)  
    4.     {  
    5.         return s;  
    6.     }  
    7.     else  
    8.     {  
    9.         return *s  
    10.     }  
    11. }  

    (六)类作用域 (1)定义作用域为类的常量

    1. class Bakery{  
    2.     const int months = 12;  //出错,因为在声明类的时候类还没有存储空间  
    3.     ....  
    4.     };  

    正确的如下:

    1. class Bakery{  
    2.     enum {months = 12};  //出错,因为在声明类的时候类还没有存储空间  
    3.     ....  
    4.     };  
    5. class Bakery{  
    6.     static const int months = 12;  //出错,因为在声明类的时候类还没有存储空间  
    7.     ....  
    8.     };  
  • 相关阅读:
    使用Fiddler抓包(手机端app)
    IE浏览器跳转url正常,谷歌浏览器跳转报403状态
    书签
    工作记录
    MySQL索引、锁和优化
    Pytorch-张量的创建与使用方法
    网络请求
    数据挖掘的五大流程
    uni开启下拉刷新
    uni-app中的tabBar配置
  • 原文地址:https://www.cnblogs.com/zhiliao112/p/4069198.html
Copyright © 2020-2023  润新知