一、先说类成员变量及成员函数的的属性。
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#include #include #include 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#include #include #include 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
完