1、成员函数的另一种写法:类的成员函数和类的定义分开写

  • e.g.
class rectangle
{
public:
int w,h;
int area();
int p();
void init(int w_,int h_);
};
int rectangle::area(){
return w*h;
}
int rectangle::p(){
return 2*(w+h);
}
void rectangle::init(int w_,int h_){
w=w_;h=h_;
}
//rectangle::说明后面的函数是rectangle类的成员函数,而不是普通函数。就一用要通过对象、对象的指针、对象的引用才能调用

2、类成员的可访问范围

  • 在类的定义中可以使用关键字说明类成员可被访问的范围,关键词可多次先后出现:

    • private:私有成员,只能在成员函数内访问
    • public:公有成员,可以在任何地方访问
    • protected:保护成员
  • 如果没有关键词,则缺省认为是私有的

  • 在类的成员函数内部,能访问:①当前对象的全部属性、函数 ②同类其他对象的全部属性、函数

  • 在成员函数以外的地方,只能够访问该类对象的公有成员

  • 设置私有成员的机制,叫做隐藏

  • 隐藏的目的是强制对成员变量的访问一定要通过成员函数进行,那么以后成员变量的类型等属性修改后,只要更改成员函数即可

    e.g.

class person
{
private:
char szname[30];//私有 名字
public:
int salary;
void setname(char *name);
void getname(char *name);
void average(person e1,person e2);
};
void person::setname(char *name)
{strcpy(szname,name)};//OK
void person::getname(char *name)
{strcpy(name,szname);}//OK
void person::average(person c1,person c2)
{
cout<<c1.szname;//OK 访问其他同类对象的私有成员
cout<<(c1.salary +c2.salary)/2;
}
int main()
{
person e;
strcpy(e.ezname,"Tom")//error 编译错 在成员函数以外的地方不能访问私有成员
e.setname("Tom")//OK
e.salary=5000;//OK
return 0;
}

3、成员函数的重载和参数缺省

  • 成员函数可以重载
  • 成员函数可以带缺省参数

    e.g.
using namespace std;
class location
{
private:
int x,y;
public:
void init(int x=0,int y=0);
void valueX(int val){x=val;}
int valueX(){return X;}
void location::init(int X,int Y)
{x=X;y=Y;}
};
int main()
{
location A;
A.init(5);
A.valueX(4);
cout<<A.valueX();//output 4
return 0;
}
  • 使用缺省参数时避免函数重载时的二义性

    e.g.
class location
{
private:
int x,y;
public:
void init(int x=0,int y=0);
void valueX(int val=0){x=val;}
int valueX(){return X;}
void location::init(int X,int Y)
{x=X;y=Y;}
};
location A;
A.valueX();//error 编译出错,两个valueX为重载关系,不传入参数时都符合,编译器无法判断调用哪个valueX

OOP 2.1 类和对象的基本概念2的更多相关文章

  1. OOP 1.5 类和对象的基本概念与用法1

    1.定义 面向对象的基本特点:抽象.封装.继承.多态 面向对象程序设计方法:将某类客观事物的共同特点归纳出来,形成一个数据结构 抽象:将事物所能进行的行为归纳出来,形成一个个函数,这些函数可以用来操作 ...

  2. python3 类、对象的基础概念

    类:具有相同特性和方法的抽象概念称为类 对象:从类中具体描述的一个事物称为对象 类和对象的关系:类是对象的抽象概念,对象是类的具体实例 class test001: #创建类 def __init__ ...

  3. oop面向对象【类与对象、封装、构造方法】

    今日内容 1.面向对象 2.类与对象 3.三大特征——封装 4.构造方法 教学目标 1.能够理解面向对象的思想 2.能够明确类与对象关系 3.能够掌握类的定义格式 4.能够掌握创建对象格式,并访问类中 ...

  4. Java复习(二)类与对象的基本概念

    2.1面向对象的程序设计方法概述 对象 程序中: 一切皆是对象 都具有标识,属性和行为 通过一个或多个变量来保存其状态 通过方法实现他的行为 类 将属性及行为相同或相似的对象归为一类 类可以看成是对象 ...

  5. PHP学习(类和对象)——基本概念

    类是面向对象程序设计的基本概念,通俗的理解类就是对现实中某一个种类的东西的抽象, 比如汽车可以抽象为一个类,汽车拥有名字.轮胎.速度.重量等属性,可以有换挡.前进.后退等操作方法. 每个类的定义都以关 ...

  6. OC语言的面向对象—类和对象、方法

    1. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 ➢ 打开电脑 ➢ ...

  7. 【类与对象】--------java基础学习第六天

    类与对象 1. 对于面向对象的开发来讲也分为三个过程: OOA(面向对象分析) OOD(面向对象设计) OOP(面向对象编程) 2. 面向对象的基本特征 2.1. 封装:保护内部操作(属性,方法)不被 ...

  8. Java类和对象的概念

    Java是一门面向对象的编程语言,理解Java,首先要理解类与对象这两个概念. Java中的类可以看做C语言中结构体的升级版.结构体是一种构造数据类型,可以包含不同的成员(变量),每个成员的数据类型可 ...

  9. 初识python中的类与对象

    这篇博客的路线是由深入浅,所以尽管图画的花花绿绿的很好看,但是请先关注我的文字,因为初接触类的小伙伴直接看类的实现可能会觉得难度大,只要耐着性子看下去,就会有一种“拨开迷雾看未来”的感觉了. 一.py ...

随机推荐

  1. Hammer.js 实现移动端元素的拖拽库

    1. Pan事件:在指定的dom区域内,一个手指放下并移动事件,即触屏中的拖动事件.这个事件在屏触开发中比较常用,如:左拖动.右拖动等,如手要上使用QQ时向右滑动出现功能菜单的效果.该事件还可以分别对 ...

  2. ThinkPHP5.1 前置操作说明

    可以为某个或者某些操作指定前置执行的操作方法,设置 beforeActionList属性可以指定某个方法为其他方法的前置操作,数组键名为需要调用的前置方法名,无值的话为当前控制器下所有方法的前置方法. ...

  3. Zookeeper -- 命令

    zkServer.sh start //启动zk进程 zkServer.sh stop //关闭zk进程 zkServer.sh status //查看zk状态 zkCli.sh //启动本地zk客户 ...

  4. Pytorch之Variable求导机制

    自动求导机制是pytorch中非常重要的性质,免去了手动计算导数,为构建模型节省了时间.下面介绍自动求导机制的基本用法. #自动求导机制 import torch from torch.autogra ...

  5. 20155233 2006-2007-2 《Java程序设计》第2周学习总结

    20155233 2006-2007-2 <Java程序设计>第2周学习总结 教材学习内容总结 本章主要学习Java的基础语法,这些语法在C语言的学习中基本上都涉及到过,基本上,Java可 ...

  6. 20155334 实验三 敏捷开发与XP实践

    实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 完成实验.撰写实验报告,实验报告以 ...

  7. P,NP,NPC的通俗解释

    这或许是众多OIer最大的误区之一.    你会经常看到网上出现“这怎么做,这不是NP问题吗”.“这个只有搜了,这已经被证明是NP问题 了”之类的话.你要知道,大多数人此时所说的NP问题其实都是指的N ...

  8. WPF 日历模板改写

    原文:WPF 日历模板改写 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/article/details/83346221  本 ...

  9. SaltStack入门篇(五)之salt-ssh的使用以及LAMP状态设计部署

    1.salt-ssh的使用 官方文档:https://docs.saltstack.com/en/2016.11/topics/ssh/index.html ()安装salt-ssh [root@li ...

  10. 使用iChecker的注意事项

    1. 要先引用jquery 2. ichecker分好多主题,每个主题带好几种颜色,在配置的时候最好指定一下. 比如引入了square主题的blue颜色演示,配置项中checkboxClass就写ic ...