国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

Professional C++ 01 A Crash Course in C++ 快速的C++基礎知識復習

2019-11-06 09:48:05
字體:
來源:轉載
供稿:網友

本章節主要是對C++基礎知識的回顧,不會涉及太簡單的知識點,比如=和==的區別,也不會涉及太復雜的知識,比如volatile關鍵字的作用。

(1) 空間命名規則

#ifndef NAMESPACE_H#define NAMESPACE_H// namespaces.hnamespace mycode {    void foo();}#endif // NAMESPACE_H
#include "namespace.h"#include <iostream>void mycode::foo(){    std::cout << "foo() called in the mycode namespace" << std::endl;}
#include "namespace.h"using namespace std;using namespace mycode;int main(int argc, char *argv[]){    foo();}output:

foo() called in the mycode namespace

(2) 變量的定義, 操作符,循環語句全部都是基礎知識。

(3) 枚舉類型

typedef enum { kPieceTypeKing, kPieceTypeQueen, kPieceTypeRook,	kPieceTypePawm} PieceT;(4) Stack 和 Heap的區別

stack分配的空間一般都是程序自動管理,heap用于new分配,delete刪除。

(5)綜合舉例,一個管理員工系統

#ifndef EMPLOYEE_H#define EMPLOYEE_H// employee.h#include <iostream>namespace Records {    const int kDefaultStartingSalary = 30000;    class Employee {    public:        Employee();        void PRomote(int inRaiseAmount = 1000);        void demote(int inDemeritAmount = 1000);        void hire();        void fire();        void display();        void setFirstName(std::string inFirstName);        std::string getFirstName();        void setLastName(std::string inLastName);        std::string  getLastName();        void setEmployeeNumber(int inEmployeeNumber);        int getEmployeeNumber();        void setSalary(int inNewSalary);        int getSalary();        bool getIsHired();    private:        std::string mFirstName;        std::string mLastName;        int mEmployeeNumber;        int mSalary;        bool fHired;    };}#endif // EMPLOYEE_H
#include "employee.h"#include <iostream>using namespace std;namespace Records {Employee::Employee(){    mFirstName = "";    mLastName = "";    mEmployeeNumber = -1;    mSalary = kDefaultStartingSalary;    fHired = false;}void Employee::promote(int inRaiseAmount){    setSalary(getSalary() + inRaiseAmount);}void Employee::demote(int inDemeritAmount){    setSalary(getSalary() - inDemeritAmount);}void Employee::hire(){    fHired = true;}void Employee::fire(){    fHired = false;}void Employee::display(){    cout << "Employee: " << getLastName() << ", " << getFirstName() << endl;    cout << "-------------------------" << endl;    cout << (fHired ? "Current Employee" : "Former Employee") << endl;    cout << "Employee Nmber: " << getEmployeeNumber() << endl;    cout << "Salary: $" << getSalary() << endl;    cout << endl;}void Employee::setFirstName(std::__cxx11::string inFirstName){    mFirstName = inFirstName;}std::__cxx11::string Employee::getFirstName(){    return mFirstName;}void Employee::setLastName(std::__cxx11::string inLastName){    mLastName = inLastName;}std::__cxx11::string Employee::getLastName(){    return mLastName;}void Employee::setEmployeeNumber(int inEmployeeNumber){    mEmployeeNumber = inEmployeeNumber;}int Employee::getEmployeeNumber(){    return mEmployeeNumber;}void Employee::setSalary(int inNewSalary){    mSalary = inNewSalary;}int Employee::getSalary(){    return mSalary;}bool Employee::getIsHired(){    return fHired;}}
#ifndef DATABASE_H#define DATABASE_H#include "employee.h"#include <iostream>// Database.hnamespace Records {    const int kMaxEmployees =100;    const int kFirstEmployeeNumber = 1000;    class Database {    public:        Database();        ~Database();        Employee &addEmployee(std::string inFirstName, std::string inLastName);        Employee &getEmployee(int inEmployeeNumber);        Employee &getEmployee(std::string inFirstName, std::string inLastName);        void displayAll();        void displayCurrent();        void displayFormer();    protected:        Employee mEmployees[kMaxEmployees];        int mNextSlot;        int mNextEmployeeNumber;    };}#endif // DATABASE_H
// Database.cpp#include <iostream>#include <stdexcept>#include "database.h"using namespace std;namespace Records {    Database::Database()    {        mNextSlot = 0;        mNextEmployeeNumber = kFirstEmployeeNumber;    }    Database::~Database()    {    }    Employee &Database::addEmployee(string inFirstName, string inLastName)    {        if (mNextSlot >= kMaxEmployees) {            cerr << "There is no more room to add the new employee!" << endl;            throw exception();        }        Employee &theEmployee = mEmployees[mNextSlot++];        theEmployee.setFirstName(inFirstName);        theEmployee.setLastName(inLastName);        theEmployee.setEmployeeNumber(mNextEmployeeNumber++);        theEmployee.hire();        return theEmployee;    }    Employee &Database::getEmployee(int inEmployeeNumber)    {        for (int i = 0; i < mNextSlot; i++) {            if (mEmployees[i].getEmployeeNumber() == inEmployeeNumber) {                return mEmployees[i];            }        }        cerr << "No empolyee with employee number " << inEmployeeNumber << endl;        throw exception();    }    Employee &Database::getEmployee(string inFirstName, string inLastName)    {        for (int i = 0; i < mNextSlot; i++) {            if (mEmployees[i].getFirstName() == inFirstName &&                    mEmployees[i].getLastName() == inLastName) {                return mEmployees[i];            }        }        cerr << "No match with name " << inFirstName << " " << inLastName << endl;    }    void Database::displayAll()    {        for (int i = 0; i < mNextSlot; i++) {            mEmployees[i].display();        }    }    void Database::displayCurrent()    {        for (int i = 0; i < mNextSlot; i++) {            if (mEmployees[i].getIsHired()) {                mEmployees[i].display();            }        }    }    void Database::displayFormer()    {        for (int i = 0; i < mNextSlot; i++) {            if (!mEmployees[i].getIsHired()) {                mEmployees[i].display();            }        }    }}
#include <iostream>#include "database.h"using namespace std;using namespace Records;int main(int argc, char *argv[]){    Database myDB;    Employee &emp1 = myDB.addEmployee("Greg", "Wallis");    emp1.fire();    Employee &emp2 = myDB.addEmployee("Scott", "Kleper");    emp2.setSalary(100000);    Employee &emp3 = myDB.addEmployee("Nick", "Solter");    emp3.setSalary(10000);    emp3.promote();    cout << "all employee: " << endl;    cout << "current employee: " << endl;    cout << endl;    myDB.displayCurrent();    cout << endl;    cout << "former employee: " << endl;    cout << endl;    myDB.displayFormer();}output:

all employee:

current employee:

Employee: Kleper, Scott

-------------------------

Current Employee

Employee Nmber: 1001

Salary: $100000

Employee: Solter, Nick

-------------------------

Current Employee

Employee Nmber: 1002

Salary: $11000

former employee:

Employee: Wallis, Greg

-------------------------

Former Employee

Employee Nmber: 1000

Salary: $30000


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 鸡东县| 平安县| 峨眉山市| 龙口市| 河池市| 长沙市| 扎鲁特旗| 沛县| 从江县| 法库县| 浦县| 晋中市| 钟祥市| 凭祥市| 上思县| 犍为县| 龙川县| 汪清县| 平定县| 伽师县| 阿克苏市| 利川市| 宁安市| 炉霍县| 淮阳县| 准格尔旗| 米泉市| 临西县| 兖州市| 磐石市| 砀山县| 浦江县| 吴江市| 元氏县| 镇赉县| 汾西县| 房山区| 云龙县| 城口县| 弥勒县| 田林县|