您的位置:首页 > 其它

struct与class关键字在定义类中的区别

2012-07-13 01:30 381 查看
struct关键字是从C语言中继承过来的,class和struct均可定义类,用它们定义类的唯一差别在于默认的成员保护级别和默认的继承保护级别(P57--第57页,2.8--章节2.8;P485,15.2.5):

默认情况下,struct的保护级别为public,而class的保护级别为private。

下面分别就这两种情况进行举例:

例1:默认的成员保护级别

struct S_Base {
int foo(int) { return 0; }
int val;
};

class C_Base {
int foo(int) { return 0; }
int val;
};


以上两个类没有显示地使用访问标号(public, protected, private),类的成员具有默认的保护级别,类S_Base成员的保护级别为public,类C_Base成员的保护级别为private。相当于如下代码:

struct S_Base {
public:
int foo(int) { return 0; }
int val;
};

class C_Base {
private:
int foo(int) { return 0; }
int val;
};


例2:默认的继承保护级别

struct S_Derived : S_Base {
};

class C_Derived : C_Base {
};


以上两个类相当于:

struct S_Derived : public S_Base {
};

class C_Derived : private C_Base {
};


References:
《C++ Primer中文版第4版》P57, 485
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: