博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
public private protected
阅读量:5141 次
发布时间:2019-06-13

本文共 3177 字,大约阅读时间需要 10 分钟。

一、先说类成员变量及成员函数的的属性。


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

  

转载于:https://www.cnblogs.com/wangkangluo1/archive/2011/07/22/2114429.html

你可能感兴趣的文章
[草稿]挂载新硬盘
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
关于mysql中GROUP_CONCAT函数的使用
查看>>
OD使用教程20 - 调试篇20
查看>>
Java虚拟机(JVM)默认字符集详解
查看>>
Java Servlet 过滤器与 springmvc 拦截器的区别?
查看>>
(tmp >> 8) & 0xff;
查看>>
linux命令之ifconfig详细解释
查看>>
NAT地址转换
查看>>
Nhibernate 过长的字符串报错 dehydration property
查看>>
Deque - leetcode 【双端队列】
查看>>
gulp插件gulp-ruby-sass和livereload插件
查看>>
免费的大数据学习资料,这一份就足够
查看>>
clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
查看>>
企业级应用与互联网应用的区别
查看>>
itext jsp页面打印
查看>>
Perl正则表达式匹配
查看>>
DB Change
查看>>
nginx --rhel6.5
查看>>
Eclipse Python插件 PyDev
查看>>