2016-08-12 32 views
0
class Box 
{ 
public: 
    // Constructor definition 
    Box(double l = 2.0, double b = 2.0, double h = 2.0) 
    { 
     cout << "Constructor called." << endl; 
     length = l; 
     breadth = b; 
     height = h; 
    } 
    double Volume() 
    { 
     return length * breadth * height; 
    } 
private: 
    double length;  // Length of a box 
    double breadth; // Breadth of a box 
    double height;  // Height of a box 
}; 

int main(void) 
{ 
    Box Box1(3.3, 1.2, 1.5); // Declare box1 
    Box Box2(8.5, 6.0, 2.0); // Declare box2 
    Box *ptrBox;    // Declare pointer to a class. 

           // Save the address of first object 
    ptrBox = &Box1; 

    ptrBox[0]; // <--- What does it do? 

} 
+0

'double volume()'はおそらく '* this'を変更しないので、おそらく' double volume()const'でしょう。 – aschepler

答えて

1
ptrBox[0] 

に相当します。

*ptrBox 

ポインタの配列が行うのと同じインデックス演算子をサポートしています。関連する記憶域とは別に、配列変数は配列の最初の要素へのポインタに過ぎないので、ポインタと配列を意味的に同じ方法で索引付けすることができます。

+0

配列はポインタではありません。彼らはポインタに崩壊する。そして、実際にはインデックス演算子を持っていません。 '[]'は配列を崩壊させ、結果のポインタをインデックスします。 – Quentin

+0

@クエンティンそれをクリアしてくれてありがとう。あなた自身の答えを追加するか、私の編集を提案するか、あなたのテキストを私の答え(クレジットあり)に組み込みます。 –

関連する問題