コンストラクション関数の詳細
5247 ワード
struct Sales_data
{
friend Sales_data add(const Sales_data&, const Sales_data&);
friend std::istream &read(std::istream&, Sales_data&);
friend std::ostream &print(std::ostream&, const Sales_data&);
public:
// ,
Sales_data() = default;// , ,
Sales_data(const std::string &s) :bookNo(s) {}// , ,
Sales_data(const std::string &s, unsigned n, double p) :bookNo(s), units_sold(n), revenue(p*n) {}// ,
Sales_data(std::istream &);// ,
// , , ; ,
std::string isbn() const
{
return bookNo;
}
Sales_data& combine(const Sales_data&);// , , Sales_data&
private:
double avg_price() const
{
return units_sold ? revenue / units_sold : 0;
}
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
//
Sales_data::Sales_data(std::istream &is)
{
read(is, *this);
}
//
//1.
Sales_data::Sales_data(const string& s, unsigned cnt, double price) {
bookNo = s;
units_sold = cnt;
revenue = cnt * price;
}
//
class ConstRef
{
public:
ConstRef(int ii);
private:
int i;
const int ci;
int& ri;
};
ConstRef::ConstRef(int ii)
{
i = ii;
//ci = ii;error: const
//ri = i;error:ri
}
// , , 。。。 const、 ,
//2、
class X {
int i;
int j;
public:
//X(int val): j(val), i(j){};error:
X(int val) :j(val), i(val){}
};
// 。 i, j。。。
// , .
// , ,
// //
class sales_data {
public:
sales_data(std::string s, unsigned cnt, double price):
bookNo(s), units_sold(cnt), revenue(cnt*price){}
sales_data():sales_data("", 0, 0){} // ;<=> sales_data() = default;
sales_data(std::string s):sales_data(s,0, 0){} // :<=>sales_data("hello");<=>sales_data("hello", 0, 0); ,
sales_data(std::string &is):sales_data(){read(is, *this) } // sales_data(), ,
private:
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
// //
class Account {
public:
void calculate() { amount += amount * interestRate;}
static double rate() { return interestRate; }
static void rate(double);
private:
std::string owner;
double amount;
static double interestRate;
static double initRate();
};
double Account::interestRate = initRate();// , ,
// initRate , , 。
void Account::rate(double newRate)
{
interestRate = newRate;
}// , static , static。
// , 。 , Account
// , , this 。
// , const , static this 。
// //
class account {
public:
static double rate() { return interestRate; }
static void rae(double);
private:
static constexpr int period = 30;
static double interestRate;
double daily_tbl[period];
};
// ,
constexpr int account::period;
// ,
class Bar {
public:
// Bar , Bar
private:
static Bar mem1;
Bar *mem2;
//Bar mem3; error:
};
// , ,
// :