C++随记(十)--类与对象(1)

C++随记(十)--类与对象(1)

类是C++中实现OOP的基础,C++相较于C来说最重要的应该就是增设了类这一概念吧。所谓面向对象的编程,其实可以理解面向类的编程。二者的关系:在C++中,对象的数据类型称为—类(class).类是对象的抽象,而对象是类的具体

1.      类的声明:

Class 类名

private:

私有的数据和对象成员;

public:

公用的数据和对象成员;

};

2.      访问控制:

可以看到类声明中出现了两个关键字:public和private,称为成员访问限定符,他们描述了对类成员的访问控制。

public顾名思义,公用的,就是说可以被类中的成员函数访问,也可以被类外的函数访问;

private私有的,就是说只能被我本类中公用成员函数(友元函数也可以,后面会讲)访问。

因此,公用成员函数是 程序 和 对象的私有成员 之间的桥梁,提供了程序和对象之间的接口。

还有第三个访问限定符:protected。用protected声明的成员被称为 受保护的成员,它不能被类外访问但是被派生类的成员函数访问(派生类暂时先不提)。

在一个类体中,不一定都包含关键字private和public,如果不写,就默认是private。

3.      定义对象的方法(和结构体很类似

①先声明类 的类型,再定义对象

如:假设之前有声明了class Country;Country这个类

    然后定义对象:Country US, UK;

②声明类的同时定义对象:

  class Country

{

 private:

 …

 public:

} US,UK;

③不声明类的名字,直接定义对象,就是把②中的Country直接省去就行,但不常用这种方法。在入门阶段个人推荐①

4.      成员函数

成员函数与常规函数定义相似,也有函数头和函数体,也可以有返回类型和参数,区别只是它属于一个类的成员,出现在类体中。使用成员函数时要注意它的权限和作用域。公有成员函数可以被类外调用,而私有的成员函数只能被其他的本类成员函数调用。成员函数可以访问本类的任何成员。

成员函数的定义:

①可以在类声明的时候直接在类体中定义,这个很简单就不赘述了。

②也可以在类外定义,在类体外定义的时候,要加作用限定符(作用域解析运算符)!---::就是两个冒号 前面加上你的类名,它表示你这个函数是属于哪个类的。

5.      对象成员的引用

访问某个对象的成员,一般可以通过三种方式:

通过对象名和成员名进行访问,这种方法较为常见

对象名.成员名

通过指向对象的指针访问

假设有对象US和它的成员area,设有指针 Country *p;

P = & US;

那么US.area p->area (*p).area三者是等价的

③通过对象的引用变量来访问其中的成员

这个也很简单就不赘述了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android 研究

Retrofit解析3之反射

反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。在计算机科学领域,反射是一类应用,它们能够自描述和自控制。这类应用通过某种机制来实现对自己行为的...

1062
来自专栏LinkedBear的个人空间

唠唠SE的面向对象-12——访问修饰符 原

903
来自专栏夏时

PHP 特色:可变变量

1204
来自专栏互联网杂技

js的隐含参数(arguments,callee,caller)使用方法

在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments arguments 该对象代表正在执行的函数和调用它的函数的参数。[...

3466
来自专栏猿人谷

【Objective-C】05-第一个OC的类

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,...

21510
来自专栏cs

c++面向对象的一些问题1.0

构造函数 特殊的成员函数,给对象的初始化,不需要用户调用,建立对象时,自动执行 它的函数名字与类相同,可以重载,没有返回值和函数类型。 如果不写构造函...

29310
来自专栏菜鸟计划

javascript Object与Array用法

引用类型:引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型的值是引用类型的一个实例。 一、Object ECMAScript中的对象其实就是一组数据...

3398
来自专栏cnblogs

Javascript基本类型回顾

本文是学习和总结ECMAScript5.1规范形成的。是对规范中所提及的Javascript类型进行剖析后的个人观点的表达(如有Bug望各位道友指正)。主要是各...

1776
来自专栏函数式编程语言及工具

泛函编程(34)-泛函变量:处理状态转变-ST Monad

    泛函编程的核心模式就是函数组合(compositionality)。实现函数组合的必要条件之一就是参与组合的各方程序都必须是纯代码的(pure code...

1966
来自专栏烂笔头

Python标准库笔记(4) — collections模块

目录[-] 这个模块提供几个非常有用的Python容器类型 1.容器 名称 功能描述 OrderedDict 保持了key插入顺序的di...

3387

扫码关注云+社区