2012-04-10 17 views
0

私は現在C++の本を読んでいますが、いくつか質問があります。クラスとメンバ関数(初心者)

1)この例では、戻り値の型を宣言するためにvoidが使用されていますか?

2)voidが呼び出し元関数にデータを返さないようにする場合、なぜ「Grade Bookへようこそ!」というメッセージが表示されるのはなぜですか?

3)オブジェクトを作成するのではなく、単純な関数を作成する方が簡単ですか?この例の使用のみです

#include <iostream> 
using namespace std; 

class GradeBook 
{ 
public: 
    void displayMessage() 
    { 
     cout << "Welcome to the Grade Book!" << endl; 
    } 
}; 

int main() 
{ 
    GradeBook myGradeBook; 
    myGradeBook.displayMessage(); 
} 

答えて

5
  1. 。 void(void *)へのポインタを持つこともできます。
  2. あなたはそのメッセージを返信していません。あなたはそれを印刷しています。 C++では、メソッドと関数に副作用があります。可能な副作用の1つが出力されます。
  3. はい、この場合です。しかし、これはオブジェクトの利点の現実的な例ではありません。そのためには、多くの場所の中でHow do I describe Object-Oriented Programing to a beginner? Is there a good real-world analogy?を参照してください。
+0

オブジェクトの利点は何ですか? – Foxic

+0

@ 30trix:その質問に答えると、いくつかの本を書き込むことができます。私は、あなたがコメントで完全で有益な返答を得るとは思わない。 –

1

だけこの例では戻り値の型を宣言するために使用さvoidですか?

はい、displayMessage()は発信者に何も返されません。
void *としても使用できます。つまり、何かを指すことができる汎用ポインタですが、あなたの例ではそのように使用されていません。ボイドは、それは呼び出し元の関数にデータを返すようにしない原因となる場合

、なぜそれはまだ「グレードブックにようこそ!」というメッセージが表示されていますか?

メッセージは関数の呼び出し元に返されていないコントロールが機能していた、その特定のステートメントを実行するとき、メッセージは標準出力に向けられています。

オブジェクトを作成するのではなく、単純な関数を作成する方が簡単ですか?

これは問題ではありません。これは、オブジェクト指向の設計原理の問題です。
クラスとメンバ関数を持つ目的は、データとそのデータを操作するメソッドを1つのユニットにまとめてバインドすることです。良い本を手に入れて、カプセル化&抽象的なを読むことができます。

The Definitive C++ Book Guide and List

0
  1. あなたのケースでは機能 "displayMeassageは" 文字列を返していない、それだけであなたのメッセージを印刷しています。

    手段を返す
  2. 、例を考える:

    クラス

    {

    int num=0; 
    
        int getNum() 
    
        { 
    
        return num; 
    
        } 
    

    }。上記の例で

    (メインボイド

    {

    A a; 
    
        int no=a.getNum(); 
    
        cout<<"no : "<<no; 
    

    }

    、次いで方法getNumは
    を返すものと呼ばれている番号を返しています。

  3. あなたがしていることは何でも、リターンの概念を理解することは良くありません。

おかげ