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的类.类属变量及方法,包 ...
随机推荐
- 吴裕雄--天生自然Android开发学习:1.2 开发环境搭建
现在主流的Android开发环境有: ①Eclipse + ADT + SDK ②Android Studio + SDK ③IntelliJ IDEA + SDK 现在国内大部分开发人员还是使用的E ...
- Ajax如何提交数据到springMVC后台
现在好多web项目实现前段和后端分离,实现前端和后端技术人员,使他们加快开发,减少沟通上的问题,后台只需要提供访问接口,而前天只需要调用提供的接口即可.减少前后端的沟通上的成本 本项目是开发中发现aj ...
- windows下apache运行环境搭建
apache的安装 要求: 1,不要安装到有中文的目录中: 2,尽量将apache,php,mysql安装到一个总的目录,便于管理.(如都建立在amp目录下,然后在该目录下分别建立apache,php ...
- Rancher的部署安装(编排选用K8S)
为什么要使用Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台.Rancher提供了在生产环境中使用的管理Do ...
- ubuntu 服务器 php 环境简单搭建
安装中文支持,避免一些语言相关的坑 12345678 sudo apt-get install language-pack-zh-hans sudo vim /etc/default/locale L ...
- spring学习笔记二:spring使用构造方法注入(set方式注入)
项目目录树: 1.spring的依赖包配置 * SPRING_HOME/dist/spring.jar * SPRING_HOME/lib/log4j/log4j-1.2.14.jar * SPRIN ...
- Scarpy框架安装教程
在一切之前,建议升级pip,如果版本太低,安装会失败 升级pip命令: python -m pip install --upgrade pip 如果上面的命令不能用,用下面这个 easy_instal ...
- Dockfile自动创建discuz论坛和可道云
将discuz论坛的zip包解压之后用tar包压缩,这样ADD可以直接解压tar包. [root@localhost centos6.9_ssh_discuz]# pwd /opt/dockerfil ...
- JXJJOI2018_三题
这次比赛的话其实还挺满意的,虽然T1 20pts(指的是分数,考试时知道有坑但是考完都没找到的我就知道切不掉这题qwq),T3爆零是在意料之外,不过其实T2贪心能切掉也是意料之外的,所以作此判断.当然 ...
- 吴裕雄--天生自然KITTEN编程:行走