C++ 理解类 和 类中的public、protected、private
我们要明确,不只是C++有类,很多语言也会用到类,因为现在很多都是面向对象编程...
在c++中,关于类的理解,个人理解是这样的,具有共同属性的一个集合被称为类,
比如说人这个集合,具有性别,年龄,出生日期等属性,可以构成一个类的成员,除此此外,
如果这个类具有共同的技能的话,我们也可以把这种技能称之为共同的方法,常见的类的
修饰符有private即私有的成员修饰,public即修饰共同的成员,一般类可以看作是Java中的
一个包类中提供了数据表示即成员函数和操作数据的方法即成员函数如何使用的方法。
一般的话,类的规范说明由两个部分组成:
1、类的声明,即类的成员函数的声明,以成员函数的方式被称作公有接口
补充知识:接口慨念
接口就是一个共享的框架,主要由我们自己写的方法所提供
2、类的方法的定义,即如何实现类的成员函数
#define:
1.关键字public可以将类的成员说明为是公有的,及可以被该类的所有成员所访问;
2.关键字private可以将类的成员说明为是私有的,它不能直接被对象访问。
其实,说白了就是对于公有成员,我们可以利用对象来进行直接调用,比如说:
class Cat
{
public:
int weight;
};
int main()
{
Cat cat;//声明一个对象
cat.weight=;
cout<<"The cat's weight is "<<cat.weight<<endl;
return ;
}
在上面这个程序中,由于Cat类中的成员函数weight被声明成了公有成员,那么我们就可以在主窗口中首先创建一个Cat类的对象(cat),并利用.运算符就可以直接调用weight这个数据成员了。
但是,值得注意的是,如果我们想要把上面程序中的public删除掉,改成private。那么这个时候,我们就无法在由Cat类所声明的对象中调用这个weight成员。这是,只有通过在类中设置一个公共的接口函数,才能实现对weight的访问,如下例:
class Cat
{
public:
void setWeight(int w){weight=w;}//设置重量
int print(){return weight;}//返回重量的大小
private:
int weight;
};
int main()
{
Cat cat;
cat.setWeight();//设置cat的重量为5
cout<<"The cat's weight is "<<cat.print()<<endl;
return ;
}
==================================总结========================================
在一般情况下,我们可以将类的数据成员设置为私有的,然后调用类中的公共该接口函数来访问他们。这样做的好处是将数据的赋值与读取分开操作。比如说上例里面,我们就将数据的赋值函数设置成setWeight(int),将数据的读取函数设置成print()。这样的好处就是赋值函数不需要考虑读取函数是如何工作的,读取函数中的代码改变也不会影响到相应的赋值函数。那么这样就提高了代码的可重用性。另外,由于将数据成员进行了私有化,那么各个对象不可以直接访问并修改数据。比如说上例中想要直接修改weight的数值就是不合法的,只有通过公共的接口函数才能访问并且修改到类里面的私有数据成员(weight)。
这样的设置时程序更容易维护,并且可避免一些不应有的错误。
C++ 理解类 和 类中的public、protected、private的更多相关文章
- php类点滴---访问修饰符public protected private
public可以被继承,可以外部访问(也就是实例化对象可以直接访问) protected受保护的,可以被子类继承,无法外部访问 private继承,外部访问都别想 <?phpclass coac ...
- java中的public,protected,private权限修饰
public和private基本没问题,主要是默认的和protected之间的区别 同一包中默认的和protected一样,所以来看看不同包的情况 看下如下代码,两个类位于不同包: public cl ...
- C++继承中的public/protected/private
今天杨老师讲到C++的继承的时候用一个表来说明子类继承父类后访问权限的变化,如下表: 注:在本类中,protected与private是相同的,但protected可以被继承,而private却不行. ...
- c/c++ 继承与多态 继承中的public, protected, private
问题:类B私有继承类A,类A有个protected成员,那么在类B的成员函数里是否可以使用类A的protected成员? 可以使用. 估计有的同学说不对吧,类B都私有继承了类A了,怎么还能访问类A的p ...
- 快速理解类的访问控制(public,protected,private)
接触过面向对象编程的朋友们都知道类中的访问控制符无非有三个,public, protected, private. 理解他就先从期望他达到的效果先说吧 Public: 使成员对于整个程序内(类内类外) ...
- C++中public,protected,private派生类继承问题和访问权限问题
C++中public,protected,private派生类继承问题和访问权限问题 当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定. 1. ...
- C++ 类访问控制(public/protected/private)
第一:private, public, protected 访问标号的访问范围. private:只能由1.该类中的函数.2.其友元函数访问. 不能被任何其他访问,该类的对象也不能访问. protec ...
- 【转载】C++中public,protected,private访问
第一:private, public, protected 访问标号的访问范围. 假如我们约定: 类内部-----指的是当前类类型的定义中,以及其成员函数的声明和定义中: 类外部-----指的是不在当 ...
- JAVA修饰符类型(public,protected,private,friendly)
转自:http://www.cnblogs.com/webapplee/p/3771708.html JAVA修饰符类型(public,protected,private,friendly) publ ...
- JAVA类型修饰符(public,protected,private,friendly)
JAVA类型修饰符(public,protected,private,friendly) public的类.类属变量及方法.包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包 ...
随机推荐
- 查看pip安装的包的位置
- java 面向对象 购物车
一个商城包括多个商品.多个用户.拥有销售商品.展示商品和查找商品功能.2) 一个用户拥有一个购物车,购物车具有结算功能.3) 商城具有名称,静态字符串类型4) 用户类是抽象类,两个子 ...
- python二叉树及叶节点获取 (面试题)
才疏学浅,智商不够,花了一晚上看了二叉树.记录一下: 1.二叉树的遍历 前序遍历:根节点->左子树->右子树 中序遍历:左子树->根节点->右子树 后序遍历:左子树->右 ...
- 吴裕雄--天生自然 PYTHON数据分析:基于Keras的CNN分析太空深处寻找系外行星数据
#We import libraries for linear algebra, graphs, and evaluation of results import numpy as np import ...
- AI能帮我们造出一个无肉的世界吗?
AI听起来很遥远,其实已经渗透到我们的日常工作和生活中.在不远的未来,互联网.大数据.硬件的发展和软件的优化,乃至全社会的参与,人工智能将真正从实验室走进生活,它将成为改变我们生活的一部分.我们吃的肉 ...
- Nginx502,504和499错误解决方案
499错误解决方案 499错误是什么?让我们看看NGINX的源码中的定义: ngx_string(ngx_http_error_495_page), /* 495, https certificate ...
- sycPHPCMS v1.6 cookie sqlinjection
./user/index.php include "../include/conn.php"; include "../include/function.php" ...
- 第一章 感受mac之美-换一种方式用电脑,开启新历程
感谢关注我的读者一直以来的追随与信任.去年到今年以来大环境都不是很好.裁员,机构优化,工厂倒闭,公司破产,贸易战等消息传来,不少还是身边发生的.今年开年以来更是有病毒横行,天降蝗灾等灾害.愿大家都好好 ...
- docker RPM包安装
1. 下载 docker RPM包 docker 使用的系统是 Centos 7.6 基础设施服务器 # wget https://download.docker.com/linux/centos/ ...
- 手把手教你如何用MSF进行后渗透测试!
在对目标进行渗透测试的时候,通常情况下,我们首先获得的是一台web服务器的webshell或者反弹shell,如果权限比较低,则需要进行权限提升:后续需要对系统进行全面的分析,搞清楚系统的用途:如果目 ...