C++基础知识(5)---类和对象
终于把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)---类和对象的更多相关文章
- C/C++基础知识总结——类与对象
1. 面向对象程序设计的特点 1.1 抽象 1.2 封装 1.3 继承 1.4 多态 (1) 分为:强制多态.重载多态.类型参数化多态.包含多态 (2) 强制多态:类型转换 重载多态: 类型参数化多态 ...
- java 基础知识九 类与对象
java 基础知识九 类与对象 1.OO(Object–Oriented )面向对象,OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应 ...
- Python基础知识:类
初级篇 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 1.面向对象三大特性 ...
- C#核心基础--浅谈类和对象的概念
浅谈类和对象的概念 一.什么是类?什么是对象? 学习一门面向对象编程语言,我们必须得知道什么是类?什么是对象? 类(Class)实际上是对某种类型的对象定义变量和方法的原型.它表示对现实生活中一类具有 ...
- Java基础 之二 类和对象
1.基础概念 1) 概念 简单来说,类是具有相同特征事物的抽象,比如有轮子的都可以抽象为车:对象则可以看做类的具体实例,比如创建一个法拉利的车,就是车这个类的实例. 抽象.封装.继承.多态是类的四个特 ...
- Java基础_0302:类和对象
定义类 class Book { // 定义一个新的类 String title; // 书的名字 double price; // 书的价格 /** * 输出对象完整信息 */ public voi ...
- Python基础之初识类和对象
我们在前面学习了解了面向过程编程,接下来我们一起来学习一下面向对象编程.其实不管是面向过程,还是面向对 象,说白了就是一种编程方式而已.既然是面向对象编程,顾名思义,此编程方式的落地需要使用 “类” ...
- spark快速开发之scala基础之3类,对象,特征
类 scala的类定义非常灵活 class test4 class test2{} class test3(x:Int) 定义一个带构造函数的类 class Point (x : Int,y : In ...
- Js基础知识2-对象、对象属性全解
Object对象 Object对象包含如下属性和方法,也就意味着一切对象(函数也是对象)都包含如下方法. 每种方法和属性在不同的对象中有不同的作用,并不是每种对象都有使用每个方法的必要. 下面是Obj ...
- C++基础知识 基类指针、虚函数、多态性、纯虚函数、虚析构
一.基类指针.派生类指针 父类指针可以new一个子类对象 二.虚函数 有没有一个解决方法,使我们只定义一个对象指针,就可以调用父类,以及各个子类的同名函数? 有解决方案,这个对象指针必须是一个父类类型 ...
随机推荐
- docker常用命令
yum install wget -y wget -O etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7 ...
- thrift:swift项目笔记
先声明:此swift不是Apple公司的那个swift开发语言,而是facebook的另一个开源项目. facebook的thrift IDL文件,如果默认用thrift -gen java生成jav ...
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(5)--问题解决
一.[root@openstack-server ~]# nova listERROR (CommandError): You must provide a username or user id v ...
- IT培训行业揭秘(四)
IT培训班的老师前面已经说过,很多都是从一线程序员岗位转过来的,因为培训行业的收入整体上来看还是比作普通程序员要高一些,这是市场的普遍行情.还有一部分老师从培训班学习过并且留到培训班任教的.一般这种老 ...
- 学写js Calender控件
好几个月没写博客了,一直在赶项目.项目现在终于处于稳定的状态,只是修修改改.作为后台程序员的我真是苦逼啊,从web到手机端接口我都得写,杂七杂八的事情...这两天终于闲下来了,没事儿看了一下关于js日 ...
- sql server生成递归日期
WITH Date AS ( SELECT CAST('2008-08-01' AS DATETIME) da UNION ALL FROM Date WHERE da < '2008-08-2 ...
- 让PDF.NET支持不同版本的SQL Server Compact数据库
最近项目中需要用到嵌入式数据库,我们选用的数据开发框架是PDF.NET(http://www.pwmis.com/SqlMap/),之前的博文已经总结了让PDF.NET支持最新的SQLite,今天我们 ...
- 安装了ruby后怎么安装sass
在命令行中输入 ruby -v 查看版本号 先移除默认的https://rubygems.org源,命令为gem sources --remove https://rubygems.org/,按回车 ...
- 解决Linux下启动Tomcat遇到Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
找到启动路径所在的目录: cd bin/ vi catalina.sh 加入以下信息: export JAVA_HOME=/home/gongzi/http/jdk1.6.0_26 export JR ...
- vm.max_map_count
Virtual memoryedit Elasticsearch uses a hybrid mmapfs / niofs directory by default to store its indi ...