C++Primer第五版——習題答案詳解(六)



習題答案目錄:https://www.cnblogs.com/Mered1th/p/10485695.html

第7章 類


練習7.1

class Sales_data {
public:
	std::string isbn() const { return bookNo; }
	Sales_data& combine(const Sales_data&);

private:
	std::string bookNo;
	unsigned units_sold;
	double revenue;
};

Sales_data& Sales_data::combine(const Sales_data &rhs) {
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;
	return *this;
}

練習7.4

class Person {

private:
	std::string name;
	std::string address;
};

練習7.5

class Person {
public:
	std::string getName() const { return this->name; }
	std::string getAddress() const { return this->address; }
private:
	std::string name;
	std::string address;
};

練習7.6

#include<iostream>
#include<string>

using namespace std;

class Sales_data {
public:
	Sales_data(std::string bN, unsigned sold, double reven) :bookNo(bN), units_sold(sold), revenue(reven) {}
	std::string isbn() const { return this->bookNo; }
	Sales_data& combine(const Sales_data&);
	double avg_price() const;
public:
	std::string bookNo;
	unsigned units_sold;
	double revenue;
};

Sales_data& Sales_data::combine(const Sales_data &rhs) {
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;
	return *this;
}

double Sales_data::avg_price() const {
	if (units_sold) {
		return revenue / units_sold;
	}
	else return 0;
}

istream &read(istream &is, Sales_data &item) {
	double price = 0;
	is >> item.bookNo >> item.units_sold >> price;
	item.revenue = item.units_sold * price;
	return is;
}

ostream &print(ostream &os, const Sales_data &item) {
	os << item.isbn() << " " << item.units_sold << " " << item.revenue << " " << item.avg_price();
	return os;
}

Sales_data add(const Sales_data &lhs, const Sales_data &rhs) {
	Sales_data sum = lhs;
	sum.combine(rhs);
	return sum;
}

int main() {
	return 0;
}

練習7.7

#include<iostream>
#include<string>

using namespace std;

class Sales_data {
public:
	Sales_data(){}
	Sales_data(std::string bN, unsigned sold, double reven) :bookNo(bN), units_sold(sold), revenue(reven) {}
	std::string isbn() const { return this->bookNo; }
	Sales_data& combine(const Sales_data&);
	double avg_price() const;
public:
	std::string bookNo;
	unsigned units_sold;
	double revenue;
};

Sales_data& Sales_data::combine(const Sales_data &rhs) {
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;
	return *this;
}

double Sales_data::avg_price() const {
	if (units_sold) {
		return revenue / units_sold;
	}
	else return 0;
}

istream &read(istream &is, Sales_data &item) {
	double price = 0;
	is >> item.bookNo >> item.units_sold >> price;
	item.revenue = item.units_sold * price;
	return is;
}

ostream &print(ostream &os, const Sales_data &item) {
	os << item.isbn() << " " << item.units_sold << " " << item.revenue << " " << item.avg_price();
	return os;
}

Sales_data add(const Sales_data &lhs, const Sales_data &rhs) {
	Sales_data sum = lhs;
	sum.combine(rhs);
	return sum;
}

int main() {
	Sales_data total;
	if (read(cin, total)) {
		Sales_data trans;
		
		while (read(cin, trans)) {
			if (total.isbn() == trans.isbn()) {
				total.combine(trans);
			}
			else {
				print(cout, total);
				cout << endl;
				total = trans;
			}
		}
		print(cout, total);
		cout << endl;
		return 0;
	}
	else {
		cerr << "No data?" << endl;
		return -1;
	}
}

練習7.8
read需要改變參數,print不需要改變

練習7.9

#include<iostream>
#include<string>
class Sales_data {
public:
	std::string isbn() const { return bookNo; }
	Sales_data& combine(const Sales_data&);

private:
	std::string bookNo;
	unsigned units_sold;
	double revenue;
};

Sales_data& Sales_data::combine(const Sales_data &rhs) {
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;
	return *this;
}

class Person {
public:
	std::string getName() const { return this->name; }
	std::string getAddress() const { return this->address; }
	std::ostream &print(std::ostream&, const Person&);
	std::istream &read(std::istream&, Person&);
public:
	std::string name;
	std::string address;
};

std::ostream &print(std::ostream &os, const Person &p) {
	os << p.getName() << " " << p.getAddress();
	return os;
}

std::istream &read(std::istream &is, Person &p) {
	is >> p.name >> p.address;
	return is;
}

int main() {
	return 0;
}

練習7.10
是否成功讀入data1,data2

練習7.11

#include<iostream>
#include<string>

using namespace std;

class Sales_data {
public:
	Sales_data() = default;
	Sales_data(const std::string bN) :bookNo(bN), units_sold(0), revenue(0) {}
	Sales_data(const std::string bN, unsigned sold) :bookNo(bN), units_sold(sold), revenue(0) {}
	Sales_data(const std::string bN, unsigned sold, double reven) :bookNo(bN), units_sold(sold), revenue(reven) {}
	std::string isbn() const { return bookNo; }
	unsigned getUnits_sold() const { return units_sold; }
	double getRevenue() const{ return revenue; }
	Sales_data& combine(const Sales_data&);

private:
	std::string bookNo;
	unsigned units_sold;
	double revenue;
};

Sales_data& Sales_data::combine(const Sales_data &rhs) {
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;
	return *this;
}

int main() {
	Sales_data A;
	Sales_data B("0-1-33333-2");
	Sales_data C("0-1-33333-3", 1);
	Sales_data D("0-1-33334-3", 1,50);

	cout << A.isbn() << ", " << A.getUnits_sold() << ", " << A.getRevenue() << endl;
	cout << B.isbn() << ", " << B.getUnits_sold() << ", " << B.getRevenue() << endl;
	cout << C.isbn() << ", " << C.getUnits_sold() << ", " << C.getRevenue() << endl;
	cout << D.isbn() << ", " << D.getUnits_sold() << ", " << D.getRevenue() << endl;

	system("pause");
	return 0;
}

練習7.12

#include<iostream>
#include<string>

using namespace std;

class Sales_data;

std::istream &read(std::istream &, Sales_data &);

class Sales_data {
public:
	Sales_data() = default;
	Sales_data(const std::string bN) :bookNo(bN), units_sold(0), revenue(0) {}
	Sales_data(const std::string bN, unsigned sold) :bookNo(bN), units_sold(sold), revenue(0) {}
	Sales_data(const std::string bN, unsigned sold, double price) :bookNo(bN), units_sold(sold), revenue(price * sold) {}
	std::string isbn() const { return bookNo; }
	unsigned getUnits_sold() const { return units_sold; }
	double getRevenue() const { return revenue; }
	double avg_price() const;
	Sales_data& combine(const Sales_data &);
	Sales_data(std::istream &is) { read(is, *this); }

public:
	std::string bookNo;
	unsigned units_sold;
	double revenue;
};

Sales_data&::Sales_data::combine(const Sales_data &rhs) {
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;
	return *this;
}

double Sales_data::avg_price() const {
	if (units_sold) {
		return revenue / units_sold;
	}
	else {
		return 0;
	}
}

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;
}

int main() {


	return 0;
}

練習7.13

#include<iostream>
#include<string>

using namespace std;

class Sales_data;

std::istream &read(std::istream &, Sales_data &);
std::ostream &print(std::ostream &os, const Sales_data &item);
Sales_data add(const Sales_data &lhs, const Sales_data &rhs);


class Sales_data {
public:
	Sales_data() = default;
	Sales_data(const std::string bN) :bookNo(bN), units_sold(0), revenue(0) {}
	Sales_data(const std::string bN, unsigned sold) :bookNo(bN), units_sold(sold), revenue(0) {}
	Sales_data(const std::string bN, unsigned sold, double price) :bookNo(bN), units_sold(sold), revenue(price * sold) {}
	std::string isbn() const { return bookNo; }
	unsigned getUnits_sold() const { return units_sold; }
	double getRevenue() const { return revenue; }
	double avg_price() const;
	Sales_data& combine(const Sales_data &);
	Sales_data(std::istream &is) { read(is, *this); }

public:
	std::string bookNo;
	unsigned units_sold;
	double revenue;
};

Sales_data&::Sales_data::combine(const Sales_data &rhs) {
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;
	return *this;
}

double Sales_data::avg_price() const {
	if (units_sold) {
		return revenue / units_sold;
	}
	else {
		return 0;
	}
}

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 << " " << item.avg_price();

	return os;
}

Sales_data add(const Sales_data &lhs, const Sales_data &rhs)
{
	Sales_data sum = lhs;
	sum.combine(rhs);

	return sum;
}


int main() {
	Sales_data sales_data1;
	print(std::cout, sales_data1) << endl;

	Sales_data sales_data2("1-01");
	print(std::cout, sales_data2) << std::endl;

	Sales_data sales_data3("1-01", 1, 100);
	print(std::cout, sales_data3) << std::endl;

	Sales_data sales_data4(std::cin);
	print(std::cout, sales_data4) << std::endl;

	system("pause");
	return 0;
}

練習7.14

Sales_data() : bookNo(""), units_sold(0) , revenue(0){ }

練習7.15

class Person {
public:
	Person() = default;
	Person(const std::string nm, const std::string ad) :name(nm), address(ad) {}
	std::string getName() const { return this->name; }
	std::string getAddress() const { return this->address; }
	std::ostream &print(std::ostream&, const Person&);
	std::ostream &read(std::istream&, Person&);
public:
	std::string name;
	std::string address;
};

練習7.16
訪問位置有限定,次數沒有限定。
public后的成員可以被整個程序內訪問,而private只能被類的成員函數訪問。

練習7.17
有,struct內的變量訪問權限是public,而class的訪問權限可以是private、public、protected

練習7.18
封裝,即隱藏對象的屬性和實現細節,僅對外公開接口,控制在程序中屬性的讀和修改的訪問級別。

練習7.21

#include<iostream>
#include<string>

using namespace std;

class Sales_data {
public:
	friend std::istream &read(std::istream &, Sales_data &);
	friend std::ostream &print(std::ostream &os, const Sales_data &item);
	friend Sales_data add(const Sales_data &lhs, const Sales_data &rhs);

	Sales_data() = default;
	Sales_data(const std::string bN) :bookNo(bN), units_sold(0), revenue(0) {}
	Sales_data(const std::string bN, unsigned sold) :bookNo(bN), units_sold(sold), revenue(0) {}
	Sales_data(const std::string bN, unsigned sold, double price) :bookNo(bN), units_sold(sold), revenue(price * sold) {}
	std::string isbn() const { return bookNo; }
	unsigned getUnits_sold() const { return units_sold; }
	double getRevenue() const { return revenue; }
	double avg_price() const;
	Sales_data& combine(const Sales_data &);
	Sales_data(std::istream &is) { read(is, *this); }

private:
	std::string bookNo;
	unsigned units_sold;
	double revenue;
};

Sales_data&::Sales_data::combine(const Sales_data &rhs) {
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;
	return *this;
}

double Sales_data::avg_price() const {
	return units_sold > 0 ? revenue / units_sold : 0;
}

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 << " " << item.avg_price();

	return os;
}

Sales_data add(const Sales_data &lhs, const Sales_data &rhs)
{
	Sales_data sum = lhs;
	sum.combine(rhs);

	return sum;
}


int main() {
	Sales_data sales_data1;
	print(std::cout, sales_data1) << endl;

	Sales_data sales_data2("1-01");
	print(std::cout, sales_data2) << std::endl;

	Sales_data sales_data3("1-01", 1, 100);
	print(std::cout, sales_data3) << std::endl;

	Sales_data sales_data4(std::cin);
	print(std::cout, sales_data4) << std::endl;


	system("pause");
	return 0;
}

練習7.22

class Person {
public:
	Person() = default;
	Person(const std::string nm, const std::string ad) :name(nm), address(ad) {}
	std::string getName() const { return this->name; }
	std::string getAddress() const { return this->address; }
	friend std::ostream &print(std::ostream&, const Person&);
	friend std::istream &read(std::istream&, Person&);
private:
	std::string name;
	std::string address;
};

練習7.23-7.24

class Screen {
public:
	typedef std::string::size_type pos;
	Screen() = default;
	Screen(pos ht, pos wd) :height(ht), width(wd) {}
	Screen(pos ht, pos wd, char c) :height(ht), width(wd), contents(ht*wd, c) {}

	char get() const { return contents[cursor]; }
	char get(pos r, pos c) const { return contents[r * width + c]; }

private:
	mutable size_t access_ctr;
	pos height, width, cursor;
	std::string contents;
};

練習7.25
可以,因為Screen類中只有string類和內置類型,他們都可以使用拷貝和賦值操作。

練習7.26

#include<iostream>
#include<string>

using namespace std;

class Sales_data {
public:
	friend std::istream &read(std::istream &, Sales_data &);
	friend std::ostream &print(std::ostream &os, const Sales_data &item);
	friend Sales_data add(const Sales_data &lhs, const Sales_data &rhs);

	Sales_data() = default;
	Sales_data(const std::string bN) :bookNo(bN), units_sold(0), revenue(0) {}
	Sales_data(const std::string bN, unsigned sold) :bookNo(bN), units_sold(sold), revenue(0) {}
	Sales_data(const std::string bN, unsigned sold, double price) :bookNo(bN), units_sold(sold), revenue(price * sold) {}
	std::string isbn() const { return bookNo; }
	unsigned getUnits_sold() const { return units_sold; }
	double getRevenue() const { return revenue; }
	inline double avg_price() const;
	Sales_data& combine(const Sales_data &);
	Sales_data(std::istream &is) { read(is, *this); }

private:
	std::string bookNo;
	unsigned units_sold;
	double revenue;
};

Sales_data&::Sales_data::combine(const Sales_data &rhs) {
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;
	return *this;
}

inline double Sales_data::avg_price() const {
	return units_sold > 0 ? revenue / units_sold : 0;
}

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 << " " << item.avg_price();

	return os;
}

Sales_data add(const Sales_data &lhs, const Sales_data &rhs)
{
	Sales_data sum = lhs;
	sum.combine(rhs);

	return sum;
}


int main() {
	Sales_data sales_data1;
	print(std::cout, sales_data1) << endl;

	Sales_data sales_data2("1-01");
	print(std::cout, sales_data2) << std::endl;

	Sales_data sales_data3("1-01", 1, 100);
	print(std::cout, sales_data3) << std::endl;

	Sales_data sales_data4(std::cin);
	print(std::cout, sales_data4) << std::endl;


	system("pause");
	return 0;
}

練習7.27

#include<iostream>
#include<string>

using namespace std;

class Screen {
public:
	typedef std::string::size_type pos;
	Screen() = default;
	Screen(pos ht, pos wd) :height(ht), width(wd) {}
	Screen(pos ht, pos wd, char c) :height(ht), width(wd), contents(ht*wd, c) {}

	Screen &set(char);
	Screen &set(pos, pos, char);
	Screen &move(pos, pos);

	char get() const { return contents[cursor]; }
	char get(pos r, pos c) const { return contents[r * width + c]; }

	Screen &display(std::ostream &os) 
	{
		do_display(os);
		return *this;
	}
	
	const Screen &display(std::ostream &os) const
	{
		do_display(os);
		return *this;
	}

	void do_display(std::ostream &os) const { os << contents; }

private:
	mutable size_t access_ctr;
	pos height, width, cursor;
	std::string contents;
};

inline Screen &Screen::set(char c) {
	contents[cursor] = c;
	return *this;
}

inline Screen &Screen::set(pos r, pos c, char ch) {
	contents[r*width + c] = ch;
	return *this;
}

inline Screen &Screen::move(pos r, pos c) {
	cursor = r * width + c;
	return *this;
}

int main() {
	Screen myScreen(5, 5, 'X');
	myScreen.display(cout);
	cout << endl;
	myScreen.move(4, 0).set('#').display(cout);
	cout << endl;

	myScreen.display(cout);
	cout << endl;

	system("pause");
	return 0;
}

練習7.28-7.29
如果是Screen則不會修改字符。

練習7.31

class Y;

class X {
	Y *y = nullptr;
};

class Y {
	X x;
};

練習7.32

class Screen;

class Window_mgr {
public:
	using ScreenIndex = std::vector<Screen>::size_type;
	void clear(ScreenIndex);
private:
	std::vector<Screen> screens;
};

class Screen {

	friend void Window_mgr::clear(ScreenIndex);

public:
	typedef std::string::size_type pos;
	Screen() = default;
	Screen(pos ht, pos wd) :height(ht), width(wd) {}
	Screen(pos ht, pos wd, char c) :height(ht), width(wd), contents(ht*wd, c) {}

	Screen &set(char);
	Screen &set(pos, pos, char);
	Screen &move(pos, pos);

	char get() const { return contents[cursor]; }
	char get(pos r, pos c) const { return contents[r * width + c]; }

	Screen &display(std::ostream &os) 
	{
		do_display(os);
		return *this;
	}
	
	const Screen &display(std::ostream &os) const
	{
		do_display(os);
		return *this;
	}

	void do_display(std::ostream &os) const { os << contents; }

private:
	mutable size_t access_ctr;
	pos height, width, cursor;
	std::string contents;
};

練習7.34
報錯,pos未聲明

練習7.35

typedef string Type;
Type initVal(); // string
class Exercise {
public:
    typedef double Type;
    Type setVal(Type); // double
    Type initVal(); // double
private:
    int val;
};

Type Exercise::setVal(Type parm) {  // first is `string`, second is `double`
    val = parm + initVal();    
    return val;
}

練習7.36
成員的初始化順序與他們在類定義中的出現順序一致,所以先初始化rem再是base,所以結果不正確。
將類內定義順序改成:

int base, rem;

練習7.37

Sales_data first_item(cin);   // Sales_data(std::istream &is) ;

int main() {
	Sales_data next;  // Sales_data(std::string s = ""): bookNo = "", cnt = 0, revenue = 0.0
	Sales_data last("9-999-99999-9"); // Sales_data(std::string s = ""): bookNo = "9-999-99999-9", cnt = 0, revenue = 0.0
}

練習7.38

Sales_data(std::istream &is = std::cin) { read(is, *this); }

練習7.41

#include <string>
#include <iostream>

using namespace std;

struct Sales_data;

std::istream &read(std::istream &is, Sales_data &item);
std::ostream &print(std::ostream &os, const Sales_data &item);
Sales_data add(const Sales_data &lhs, const Sales_data &rhs);

struct Sales_data
{
	friend std::istream &read(std::istream &is, Sales_data &item);
	friend std::ostream &print(std::ostream &os, const Sales_data &item);
	friend Sales_data add(const Sales_data &lhs, const Sales_data &rhs);
public:
	Sales_data(const std::string &s, unsigned n, double p) : bookNo(s), units_sold(n), revenue(p*n) 
	{ 
		std::cout << "Sales_data(const std::string &s, unsigned n, double p)" << std::endl; 
	}
	Sales_data() : Sales_data("", 0, 0) 
	{ 
		std::cout << "Sales_data() : Sales_data(\"\", 0, 0)" << std::endl; 
	}
	Sales_data(const std::string &s) : Sales_data(s, 0, 0) 
	{ 
		std::cout << "Sales_data(const std::string &s) : Sales_data" << std::endl; 
	}
	Sales_data(std::istream &is) : Sales_data() 
	{ 
		read(is, *this);
		std::cout << "Sales_data(std::istream &is) : Sales_data()" << std::endl; 
	}
	std::string isbn() const { return bookNo; }
	Sales_data& combine(const Sales_data&);
private:
	inline double avg_price() const;

	std::string bookNo;
	unsigned units_sold = 0;
	double revenue = 0.0;
};

Sales_data& Sales_data::combine(const Sales_data &rhs)
{
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;

	return *this;
}

inline double Sales_data::avg_price() const
{
	if (units_sold)
		return revenue / units_sold;
	else
		return 0;
}

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 << " " << item.avg_price();

	return os;
}

Sales_data add(const Sales_data &lhs, const Sales_data &rhs)
{
	Sales_data sum = lhs;
	sum.combine(rhs);

	return sum;
}

int main() {
	Sales_data a("0-1-999-9", 2, 10);
	cout << endl;

	Sales_data b;
	cout << endl;

	Sales_data c("0-1-999-9");
	cout << endl;

	Sales_data d(cin);

	system("pause");
	return 0;
}

練習7.43

class NoDefault {
public:
	NoDefault(int i) {}
};

class C {
public:
	C() :no(0) {}
private:
	NoDefault no;
};

練習7.44
非法,NoDefault沒有定義默認構造函數

練習7.45
合法,C有默認構造函數

練習7.48
都沒問題,因為都是顯式構造了Sales_data對象

練習7.50

explicit Person(std::istream &is) { read(is, *this); }

練習7.52
該初始化是用花括號括起來的成員初始值列表,需要定義聚合類。

struct Sales_data {
	std::string isbn;
	unsigned units_sold;
	double revenue;
};

練習7.53

class Debug
{
public:
	constexpr Debug(bool b = true) : hw(b), io(b), other(b) {}
	constexpr Debug(bool h, bool i, bool o) : hw(h), io(i), other(o) {}

	constexpr bool amy() { return hw || io || other; }
	void set_io(bool b) { io = b; }
	void set_hw(bool b) { hw = b; }
	void set_other(bool b) { other = b; }
private:
	bool hw;
	bool io;
	bool other;
};

練習7.56

類的靜態成員與類本身直接相關,而不是與類的各個對象保持關聯。 
每個對象不需要存儲公共數據,如果數據被改變,則每個對象都可以使用新值。
靜態數據成員可以是不完全類型; 可以使用靜態成員作為默認實參。

練習7.57

#include<iostream>
#include<string>
using namespace std;

//全局變量 利率
//double interestRate;

class Account {
public:
	Account(std::string name, double money) :owner(name), amount(money) {}
	double getAmount() const {
		return this->amount;
	}
	void deposit(double money) {
		this->amount += money;
	}
	double rate() { return interestRate; }
	static void rate(double newRate){  //靜態的成員函數不屬於任何一個對象,所以this不能用,this指的是當前對象。
		interestRate = newRate;
	}
	void applyint() { amount += amount * interestRate; }

private:
	std::string owner;
	double amount;
	static double interestRate; //只有一個,不能在這初始化
	static const int period = 30; //例外
};

double Account::interestRate = 0.015;  

int main() {
	//interestRate = 0.015;

	Account::rate(0.026);  //函數加static以后可以用這種方法修改static變量
	
	Account a("張三", 1000);
	Account b("李四", 2000);
	
	cout << a.rate() << endl;

	a.deposit(500);
	b.deposit(600);

	cout << a.getAmount() << endl;
	cout << b.getAmount() << endl;

	cout << a.rate() << endl;
	a.rate(0.08);
	cout << a.rate() << endl;
	cout << b.rate() << endl;

	Account::rate(0.02);
	a.applyint();
	b.applyint();
	cout << a.getAmount() << endl;
	cout << b.getAmount() << endl;


	system("pause");
	return 0;
}

練習7.58

// example.h
class Example {
public:
    static double rate;   //不能直接初始化
    static const int vecSize = 20;
    static vector<double> vec;
};
// example.C
#include "example.h"
double Example::rate = 6.5;
vector<double> Example::vec(Example::vecSize); 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM