0
私は、次のコードを持っている:私は、コードを実行すると、以下の出力を得るCコンストラクタ++でのデータメンバーのアドレス
#include <iostream>
#include <string>
class Quote
{
public:
Quote() = default;
Quote(const std::string &b, double p) :
bookNo(b), price(p) {std::cout<<"The address of p is :"<<&p<<'\n';}
std::string isbn() const {}
virtual double net_price(std::size_t n) const {return n * price;}
virtual ~Quote() = default;
private:
std::string bookNo;
protected:
double price = 0.0;
};
class Bulk_quote : public Quote
{
public:
Bulk_quote() = default;
Bulk_quote(const std::string& b, double p, std::size_t q, double disc) :
Quote(b, p), min_qty(q), discount(disc) { std::cout<<"The address of p is: " <<&p<<'\n';}
double net_price(std::size_t n) const override;
private:
std::size_t min_qty = 0;
double discount = 0.0;
};
int main()
{
Bulk_quote bq("textbook", 11.0, 5, 0.5);
}
、
The address of p is :0x7fff5fbff5e8
The address of p is: 0x7fff5fbff668
Program ended with exit code: 0
私の認識であるという派生クラスの再利用を基本クラスのコンストラクタ2つの "p"は2つのクラスでまったく同じなので、2つの "p"のアドレスは同一でなければなりません。しかし、私の理解では出力が異なります。
「p」のアドレスが異なるのはなぜですか?事前に感謝します
質問には関係のないコードをいくつか省略します。 – William
pはメンバーではなくパラメータです。 – kfsone
あなたは '&price'と書くのですか? –