public private protected
一、先说类成员变量及成员函数的的属性。
1.public 与 private 的区别
这两个的区别学过C++的都比较清楚,public的变量和函数在类的内部外部都可以访问,而private只有在类的
内部可以访问
1. protected 与 private
如果一个类没有派生出其他类,那么protected和private是完全相同的,也就是说protected和private一样只
能在类的内部访问,不能在类的外部访问。
但是在派生其他类的情况下,protected和private的区别就体现出来了。private型变量只能在类本身中访问,
在其派生类中也不能访问;而protected型的变量可以在派生类中访问
/*
* =====================================================================================
*
* Filename: main.cc
*
* Description:
*
* Version: 1.0
* Created: 07/22/2011 09:41:51 PM
* Revision: none
* Compiler: gcc
*
* Author: kangle.wang (mn), wangkangluo1@gmail.com
* Company: APE-TECH
*
* =====================================================================================
*/
#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <iostream>
using namespace std;
class Base
{
public:
Base(int a, int b = 0);
protected:
int m_b;
private:
int m_a;
};
class Derive : public Base
{
public:
Derive(int a, int b = 0) : Base(a, b) {}
int GetA();
int GetB();
};
Base::Base(int a, int b)
{
m_a = a;
m_b = b;
}
int Derive::GetA()
{
return 1;
//return m_a;//派生类不能访问基类的私有变量, 错误
}
int Derive::GetB()
{
return m_b;//派生类可以访问基类的保护变量, 正确
}
// === FUNCTION ======================================================================
// Name: main
// Description: main function
// =====================================================================================
int
main ( int argc, char *argv[] )
{
int num = 0;
Base b(10, 20);
//num = b.m_a; //类的外部不能访问私有变量, 错误
//num = b.m_b; //类的外部不能访问保护变量, 错误
cout << "\nProgram " << argv[0] << endl << endl;
return EXIT_SUCCESS;
} // ---------- end of function main ----------
编译:Makefile
all:main
main:main.cc
g++ -g -Wall -O0 main.cc -o main
2.public 与 private 的区别
这两个的区别学过C++的都比较清楚,public的变量和函数在类的内部外部都可以访问,而private只有在类的
内部可以访问
#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <iostream>
using namespace std;
class Base
{
public:
Base(int a, int b = 0);
int GetA();
int m_b;
private:
int GetB();
int m_a;
};
Base::Base(int a, int b)
{
m_a = a;
m_b = b;
}
int Base::GetA()
{
return m_a;//类的内部可以访问私有变量, 正确
}
int Base::GetB()
{
return m_b;//类的内部可以访问公有变量, 正确
}
// === FUNCTION ======================================================================
// Name: main
// Description: main function
// =====================================================================================
int
main ( int argc, char *argv[] )
{
int num;
Base b(10);
// num = b.m_a; //类的外部不能访问私有变量, 错误
num = b.m_b;//类的外部可以访问公有变量, 正确
cout << "\nProgram " << argv[0] << endl << endl;
return EXIT_SUCCESS;
} // ---------- end of function main ----------
编译:Makefile
all:main
main:main.cc
g++ -g -Wall -O0 main.cc -o main
完