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 条评论
登录 后参与评论

相关文章

来自专栏Python小白进阶之旅

线程和进程全面使用,3分钟了解GIL,多线程进程竟然更慢

可能由于公众号内markdown可能会出现排版错误,可以在有道云查看:http://note.youdao.com/noteshare?id=4d32e4861...

401
来自专栏LanceToBigData

Java常用类(二)String类详解

前言   在我们开发中经常会用到很多的常用的工具类,这里做一个总结。他们有很多的方法都是我们经常要用到的。所以我们一定要把它好好的掌握起来! 一、String简...

23910
来自专栏技术翻译

JVM体系结构的解释

每个Java开发人员都知道字节码将由JRE(Java运行时环境)执行。但许多人并不知道JRE是Java虚拟机(JVM)的实现,它分析字节码,解释代码并执行它。作...

862
来自专栏Golang语言社区

Node.js新手必须知道的4个JavaScript概念

如果只需要知道一种编程语言就可以构建一个全栈的应用程序,是不是特别了不起?Ryan Dahl为了把这个想法成为现实,创造了node.js。Node.js是建立在...

3167
来自专栏木木玲

深入解析 volatile 、CAS 的实现原理

1511
来自专栏杨建荣的学习笔记

Java和Python的Web开发

在Java里面有一种服务端的软件组件技术,叫做Servlet,其实它的定位就是轻巧的小玩意,比如Java里面的applet也是类似的命名。Servlet能够动态...

2814
来自专栏有趣的django

6.python内置函数

1. abs() 获取绝对值 >>> abs(-10) 10 >>> a = -10 >>> a.__abs__() 10 2. all()   参数为可迭代对...

3246
来自专栏Java开发

Java奇淫巧技之Lombok

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。官...

763
来自专栏JackieZheng

并发和多线程-八面玲珑的synchronized

上篇《并发和多线程-说说面试常考平时少用的volatile》主要介绍的是volatile的可见性、原子性等特性,同时也通过一些实例简单与synchronized...

913
来自专栏zingpLiu

面向对象(二)【类的成员及修饰符】

在上述类的成员中,普通字段是存储在对象之中的;其他成员均是存储在类中,也就是说无论创建了多少个对象,对象本身只保留成员中的普通字段,其他成员均存储在类中。

794

扫码关注云+社区