终于把C++中的基础在前面的几篇博客中总结完了,可能还有一些语法还没有总结到,没关系,以后用到了再查资料就好。类是C++中的一个非常重要的概念,这是区别你使用的C++到底是面向过程还是面向对象的一个重要的标志。如果在你写的C++程序中没有使用到类,仅仅使用了C++中的几个库。那么你所使用的C++仍然是面向过程的,只有使用了类的C++程序才能说是面向对象的。当然前面的概念有些不太准确,面向对象是一种思想和设计方法,不是说牵强附会的使用了类就掌握了面向对象。面向对象的思想需要我们在慢慢培养和建立。

在C++的类中,我们通过三个关键字public,protected,private来限定类中成员的可见范围。public类型的成员对外部来说是暴露的,外部的程序可以通过这些接口来实现对类的操作。面向对象所基于的是客户服务器模型,我们所写的类和对象就是服务器,他们将各种已经写好的函数封装好,客户就是调用类中各种函数的程序。private声明的成员,对于外部客户来说是不可见的,但是对于类内部的各个成员来说是可见的,外部客户只能通过public声明的接口实现对类内部私有成员的操作。在C++中一般不将数据成员声明为public,从而实现了信息的封装。在使用类的成员时要用到类的成员操作符 . 和 ->。如下

 class A
{
public:
void setA(int b)
{
a=b;
}
private:
int a;
}
A aa,*ap; aa.setA();
ap->setA();

可以看到,如果前面是对象实体,则使用 “.”,如果前面是对象指针则使用->。

在前面我们已经说过,struct关键字也可以声明类,那么是否struct关键字就完全等价于class关键字呢,答案显然是no。我们来看一下struct与class有什么区别。在struct中,如果一个成员前面没有public,protected,或者是private,那么它默认的就是公有成员,而在class中默认的是私有成员。

C++类的成员函数的定义既可以放在类的里面,也可以放在类的外面。但是成员函数的声明都必须放在类的里面。如果定义的函数体放在类的里面的话,就将这个函数当做内联函数来处理。但是也可以在声明的时候用关键字inline显式声明这个函数是内联函数。这时候函数体的定义即使放在外部也会按照内联函数来处理。如下:

 class A
{
public:
int getA() const {return a;}
inline void setA(int b); private:
int a;
} void A::setA(int b) {a=b;}

上例中的函数getA和setA都是内联函数。

C++基础知识(5)---类和对象的更多相关文章

  1. C/C++基础知识总结——类与对象

    1. 面向对象程序设计的特点 1.1 抽象 1.2 封装 1.3 继承 1.4 多态 (1) 分为:强制多态.重载多态.类型参数化多态.包含多态 (2) 强制多态:类型转换 重载多态: 类型参数化多态 ...

  2. java 基础知识九 类与对象

    java  基础知识九  类与对象 1.OO(Object–Oriented )面向对象,OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应 ...

  3. Python基础知识:类

    初级篇 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 1.面向对象三大特性 ...

  4. C#核心基础--浅谈类和对象的概念

    浅谈类和对象的概念 一.什么是类?什么是对象? 学习一门面向对象编程语言,我们必须得知道什么是类?什么是对象? 类(Class)实际上是对某种类型的对象定义变量和方法的原型.它表示对现实生活中一类具有 ...

  5. Java基础 之二 类和对象

    1.基础概念 1) 概念 简单来说,类是具有相同特征事物的抽象,比如有轮子的都可以抽象为车:对象则可以看做类的具体实例,比如创建一个法拉利的车,就是车这个类的实例. 抽象.封装.继承.多态是类的四个特 ...

  6. Java基础_0302:类和对象

    定义类 class Book { // 定义一个新的类 String title; // 书的名字 double price; // 书的价格 /** * 输出对象完整信息 */ public voi ...

  7. Python基础之初识类和对象

    我们在前面学习了解了面向过程编程,接下来我们一起来学习一下面向对象编程.其实不管是面向过程,还是面向对 象,说白了就是一种编程方式而已.既然是面向对象编程,顾名思义,此编程方式的落地需要使用 “类” ...

  8. spark快速开发之scala基础之3类,对象,特征

    类 scala的类定义非常灵活 class test4 class test2{} class test3(x:Int) 定义一个带构造函数的类 class Point (x : Int,y : In ...

  9. Js基础知识2-对象、对象属性全解

    Object对象 Object对象包含如下属性和方法,也就意味着一切对象(函数也是对象)都包含如下方法. 每种方法和属性在不同的对象中有不同的作用,并不是每种对象都有使用每个方法的必要. 下面是Obj ...

  10. C++基础知识 基类指针、虚函数、多态性、纯虚函数、虚析构

    一.基类指针.派生类指针 父类指针可以new一个子类对象 二.虚函数 有没有一个解决方法,使我们只定义一个对象指针,就可以调用父类,以及各个子类的同名函数? 有解决方案,这个对象指针必须是一个父类类型 ...

随机推荐

  1. cf Round 633

    A.Rebus(思维题) 给出一个这种形式的表达式 ? + ? - ? + ? = n.要求用1-n的数字填充疑问号使等式成立,如果不存在这样的方式,则输出不可能.存在则输出任意的方式. 移项可以变成 ...

  2. thrift:swift项目笔记

    先声明:此swift不是Apple公司的那个swift开发语言,而是facebook的另一个开源项目. facebook的thrift IDL文件,如果默认用thrift -gen java生成jav ...

  3. JAVA的正则表达式-学习

    1.正则表达式作用 正则表达式,是用来匹配字符串的,即检查一定的格式,还能按格式进行分组,替换......其实,不用正则表达式,也可以编.但是,大多数情况下,正则表达式可以提高你编程的效率. 2.学习 ...

  4. SpringBoot揭秘:快速构建微服务体系

    chapter 2: 饮水思源:回顾与探索Spring框架本质 IoC其实有两种方式,一种是DI(dependency Injection),一种是DL(dependency Lookup 依赖查找, ...

  5. Deconvolution Using Theano

    Transposed Convolution, 也叫Fractional Strided Convolution, 或者流行的(错误)称谓: 反卷积, Deconvolution. 定义请参考tuto ...

  6. Java Win自动环境配置脚本

    @echo off :: TODO:设置java环境变量 :: Author: Sunky color 02 set "NewPath=%cd%" set "JavaHo ...

  7. 学习vue.js 第一天

    最近听到很多人都在用Vue.js ,我也想凑凑热闹,来个入门 啥的 ,要不以后人家说,啥都不知道,多low 看到官网 是这样介绍Vue.js Vue.js(读音 /vjuː/, 类似于 view) 是 ...

  8. 格式工厂 v4.0.0 最新去广告绿色纯净版

    最好用的多媒体格式转换利器:格式工厂现已更新至v4.0,此次更新加入最新的HEVC(H265)编码,MP4,MKV的压缩比大幅度提高!格式工厂,轻松转换一切你想要的格式!利器在手,转换不愁! 格式工厂 ...

  9. 【BZOJ-3143】游走 高斯消元 + 概率期望

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2264  Solved: 987[Submit][Status] ...

  10. JS三大特性

    抽象 在分析三大特性之前我们要先了解什么叫抽象. 定义: 在定义一个类的时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板),这种研究问题的方法就称为抽象 一.封装 定义: ...