0

私はプログラミングに不慣れで、単純な疑問があります。

Javaに存在するようなC++のpublicprivateなどの同等の識別子があるかどうか疑問に思いました。私が知っている元のために

Javaの場合

*public String small(){
return "hello";
}*

C++では

*string small(){
return "hello";
}*
4

6 に答える 6

5

C++ では、Java のように個々の宣言にアクセス指定子を適用しません。クラス内のセクションにそれらを設定すると、次のアクセス指定子までのすべてのメンバーがそのアクセス レベルを持ちます。

class MyClass {
public:
    std::string small() const { return "hello"; }
    int also_public();
private:
    void another_func();
};
于 2013-03-01T20:13:21.103 に答える
4

C ++には、パブリック/プライベート/保護された「セクション」があります。

class A
{
private:
    string a;
    void M1();

protected:
    string b;
    void M2();

public:
    string c;
    void M3();
};
于 2013-03-01T20:13:59.770 に答える
4

ありますが、クラススコープに限定されています。メンバーを参照する場合、各メンバーに個別に適用されるのではなく、セクション全体を定義します。

class Foo : public Bar // public inheritance. Can be private. Or even protected!
{
 public:.
  int a; // public
  double b; // still public
 private:
  double x; // private
 public:
  double y; // public again:
 protected:
  // some protected stuff
};

アクセス指定子はクラスには適用されません (また、C++ にはモジュールの概念はありません)。クラスは、別のクラス内にネストされている場合にのみ、プライベート/保護できます。

于 2013-03-01T20:13:24.937 に答える
3

C ++にはアクセシビリティ修飾子がありますが、Javaとは異なり、すべてのメンバーでそれらを繰り返す必要はありません。

class C
{
    int a; // private, since class members are private by default
public:
    int b; // public, since it's in a block of public members
    int c; // also public
private:
    int d; // private again
protected:
    int e; // protected
};

struct S
{
    int a; // public, since struct implicitly gives a block of public members
public:
    int b; // public, since it's in a block of public members
    int c; // also public
private:
    int d; // private again
protected:
    int e; // protected
};

ちなみに、アクセシビリティラベルによって作成されたブロックは、アクセスを制御するだけでなく、メモリレイアウトにも影響を与えます。

このクラスは標準レイアウトPODです:

struct S
{
    int a;
    int b;
    int c;
};

これもそうです:

struct S
{
private:
    int a;
    int b;
    int c;
};

しかし、これはそうではありません:

struct S
{
    int a;
    int b;
private:
    int c;
};

そしてこれはC++11にありますが、C++03にはありません。

struct S
{
    int a;
    int b;
public:
    int c;
};
于 2013-03-01T20:13:58.890 に答える
0

C++で

const char *small() {
    return "hello";
}

また

std::string small() {
    return "hello";
}

文字配列または文字列オブジェクトのどちらが必要かによって異なります。

于 2013-03-01T20:13:14.677 に答える
0

C++ クラス内で public、private、および protected を使用できます。

例えば

Class A {
public:
 int x;
 int getX() { return x; }

private:
 int y;
};

ここで x と getX 関数は public です。y は非公開です。

于 2013-03-01T20:13:23.023 に答える