public protect private. 草稿。

#include <iostream>
#include <thread>
#include <memory> // | 父类的public成员 | 父类的protected成员 | 父类的private成员
//---------------|------------------|---------------------|-----------------
//public继承 | public | protected | 访问不到
//---------------|------------------|---------------------|-----------------
//protected继承 | protected | protected | 访问不到
//---------------|------------------|---------------------|-----------------
//private继承 | private | private | 访问不到 using namespace std; class ibook
{
public:
string signture;
ibook(const string& _name,int _c,int _p,const string& _s):name(_name),cost(_c),price(_p),supplier(_s){}
protected:
string name;
int cost;
int price;
string supplier;
}; class Book: public ibook
{
public: void showInfo()
{
cout<<"book name:"<<name<<". price:"<<price<<". cost:"<<cost<<". supplier:"<<supplier<<". signtrue:"<<signture<<endl;
}
Book(const string& _name,int _c,int _p,const string& _s):ibook(_name,_c,_p,_s){} void SetCost(int _cost,int passWord)
{
if(passWord==)
{
//private:只有book类的函数才可以访问.这里访问主体是book::SetCost(int,int,Book* this).访问对象是this->cost.
//虽然把setcost方法变成了public.但是我们可以利用函数的参数,要求输入密码.体现了类的封装性.
cost=_cost;
}
} //可修改的参数,使用指针,不建议写成Book&, 参考google c++ 代码规范.
void SetOtherCost(int _cost,int passWord, Book* myBook)
{
if(passWord==)
{
//这里访问主体是Book::SetOtherCost(int,int, Book* myBook,Book* this).访问对象是*myBook和*this.
myBook->cost=_cost;
cost=_cost;
}
} }; //根据设计规范,只推荐book 和englichbook 继承一个抽象类.
//这里就english就强烈依赖book了.连showinfo.都没办法自定义.
class EnglichBook:public ibook
{
public: void showInfo()
{
cout<<"book name:"<<name<<". price:"<<price<<". cost:"<<cost<<". supplier:"<<supplier<<". signtrue:"<<signture<<endl;
}
EnglichBook(const string& _name,int _c,int _p,const string& _s,int _tax):ibook(_name,_c,_p,_s),tax(_tax){} private:
int tax;
}; //public:任何函数都可以访问任何此类对象的public成员.
//private:就是说外部函数不可访问任何此类对象的私有成员.而类的内部函数可以访问任何此类对象的私有成员. int main()
{
Book cpp=Book("c++ primer",,,"bird public");
cpp.showInfo();
cpp.signture=string("linson's book");//public:任何函数都可以访问.这里访问主体是main().访问对象是cpp.signture
//cpp.cost=5;//error. private:只有book类的函数才可以访问.
cpp.showInfo(); //密码错误,修改无效
cpp.SetCost(,);
cpp.showInfo(); //密码ok
cpp.SetCost(,);
cpp.showInfo(); Book cSharp=Book("c# good",,,"bird public"); //可以通过一个对象来访问另外一个对象的private私有成员.为什么.我们进入函数,分析一下.
cSharp.SetOtherCost(,,&cpp);
cpp.showInfo();
cSharp.showInfo();
}

public protect private. 草稿。的更多相关文章

  1. public,protect,private访问权限

    第一:private, public, protected 访问标号的访问范围. private:只能由1.该类中的函数.2.其友元函数访问.不能被任何其他访问,该类的对象也不能访问. protect ...

  2. C++中public/protect/private三种访问权限控制

    一.成员访问权限控制 1.public (1)public成员变量可以被成员函数访问  [访问性] (2)public成员可以被实体对象访问  [访问性] (3)public成员可以成为子类成员  [ ...

  3. [C++]访问控制与继承(public,protect,private) 有时间再整理!!!

    http://www.cnblogs.com/chio/archive/2007/06/11/779408.html http://www.cnblogs.com/SelaSelah/archive/ ...

  4. java中public与private还有protect的区别

    java中public与private还有protect的区别 总是忘记.

  5. Java中public、private、protect对数据成员或成员函数的访问限制

    Java类中对数据成员.成员函数的访问限制修饰有:public.protect.private.friendly(包访问限制) public修饰的数据成员或成员函数是对所有用户开放的,所有用户可以直接 ...

  6. Java中访问修饰符public、private、protecte、default

    Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅 ...

  7. java中public,private,protected和default的区别

    类中的数据成员和成员函数据具有的访问权限包括:public.private.protect.default(包访问权限) 作用域       当前类     同一package 子孙类   其他pac ...

  8. java中public、private、protected区别

    类中的数据成员和成员函数据具有的访问权限包括:public.private.protect.friendly(包访问权限) 1.public:public表明该数据成员.成员函数是对所有用户开放的,所 ...

  9. Java 基础 - public、private、protected区别

    ref: https://www.cnblogs.com/pengfeiliu/p/3745934.html 类中的数据成员和成员函数据具有的访问权限包括:public.private.protect ...

随机推荐

  1. jquery 选择器(name,属性,元素)大全

    jQuery 选择器大体上可分为:基本选择器.层次选择器.过滤选择器.表单选择器. 其中过滤选择器可以分为:简单过滤选择器.内容过滤选择器.可见性过滤选择器.属性过滤选择器.子元素过滤选择器.表单对象 ...

  2. arrayToJson将数组转化为json格式的js代码 ///////////////////////zzzzzzzzzzzzzzzz

    //去除空格 function trim(str) {   return str.replace(/\s|\xA0/g,""); } /** *js数组转json * */ fun ...

  3. try,catch,finally含return时的执行顺序及丢失的伪例

    最近面试遇到一个之前也看到过但没去看一下的问题.就是有return情况下的try,catch,finally的执行顺序. 今天写了下. 先看顺序问题.总结如下: 一:finally中没有写return ...

  4. MySQL错误:The user specified as a definer (XXX@XXX) does not exist

    今天由于更换服务器,重新再本地备份了数据库,试运行程序报错,如下: MySQL错误:The user specified as a definer (XXX@XXX) does not exist 意 ...

  5. joson返回数据库的时间格式在前台用js转换

    function ChangeDateFormat(val) { if (val != null) { var date = new Date(parseInt(val.replace("/ ...

  6. WebSphere MQ Explorer的sqlserver的jdbc

    一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...

  7. 使用tmpfs作为缓存加速缓存的文件目录

    使用tmpfs作为缓存加速缓存的文件目录 [root@web02 ~]# mount -t tmpfs tmpfs /dev/shm -o size=256m[root@web02 ~]# mount ...

  8. php常用函数file

    fopen:(创建并)打开一个文件或url地址. 模式 说明 r 只读,将将文件指针指向文件开始位置 r+ 读写,将文件指针指向文件开始位置 w 只写,将文件指针指向文件开始位置将将文件内容清空,如果 ...

  9. java学习点

    (1) spring mvc (2) java 多线程 (3) 链表 (4) mq (5) db2 (6)meaven (7) Mybitis

  10. C#:额外知识点

    6.写入.输出二进制数据(指定地址 与 内存交互数据) public void WriteSerialize(object data, int offset, int length) { Binary ...