a.定义:

类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。

关键字 public 确定了类成员的访问属性。在类对象作用域内,公共成员在类的外部是可访问的。您也可以指定类的成员为 private 或 protected,私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问。

类提供了对象的蓝图,所以基本上,对象是根据类来创建的。声明类的对象,就像声明基本类型的变量一样:

Box Box1;

Box Box2; //定义了两个box类的对象

b.类成员函数:

https://www.runoob.com/cplusplus/cpp-class-member-functions.html

注意C++的namespace概念

c.类访问修饰符:

数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记public、private、protected 来指定的。

成员和类的默认访问修饰符是 private。

(1). 公有(public)成员:

在程序中类的外部是可访问的。您可以不使用任何成员函数来设置和获取公有变量的值 :

line.length=10.0;  //line是对象,length是public的成员变量,直接赋值不用成员函数。

(2). 私有(private)成员:

私有成员变量或函数在类的外部是不可访问的,甚至是不可查看的。只有类和友元函数可以访问私有成员。

默认情况下,类的所有成员都是私有的。私有成员只能通过成员函数访问:

box.setWidth(10.0);

(3). 保护(protected)成员:

保护成员变量或函数与私有成员十分相似,但有一点不同,保护成员在派生类(即子类)中是可访问的。

(4) 继承中的特点:

1.public 继承:基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:public, protected, private

2.protected 继承:基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:protected, protected, private。   (protected 成员可以被派生类访问。)

3.private 继承:基类

public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:private, private,

private。  (private 成员只能被本类成员(类内)和友元访问,不能被派生类访问)

 d.继承:

面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。

例子:

classRectangle:publicShape    // Shape是基类(父)。Rectangle是派生类(子类)

关于成员函数的继承见上一项。

显而易见,子类定义的成员函数和成员变量不能被父类使用,但是父类和成员函数和成员变量都根据情况可以被子类使用。

注:可以多重继承(一个子类可以有好几个父类,嘿嘿)

e.类构造函数:

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。

默认的构造函数没有任何参数,但如果需要,构造函数也可以带有参数。这样在创建对象时就会给对象赋初始值.

Line::Line(doublelen)

{

cout<<"Object is being created, length ="<//一般就是设定个初始值,比如 a = len;

length=len;

Sub:C++ 初始化类成员时,是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序。所以说最好按照顺序声明。

f. 析构函数:

类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。

析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。

Line::~Line(void)

{

cout<<"Object is being deleted"< //一般不是这种,一般都是释放内存或者关闭文件之类的指令(delete 或者 close)

}

g.拷贝构造函数:

拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象

如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。

https://www.runoob.com/cplusplus/cpp-copy-constructor.html

h.友元函数:

类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。

友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。

如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend。

i.静态成员:

我们可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。

静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化.

静态成员函数:

如果把函数成员声明为静态的,就可以把函数与类的任何特定对象独立开来。静态成员函数即使在类对象不存在的情况下也能被调用,静态函数只要使用类名加范围解析运算符::就可以访问。

静态成员函数只能访问静态成员数据、其他静态成员函数和类外部的其他函数。

静态成员函数有一个类范围,他们不能访问类的 this 指针。您可以使用静态成员函数来判断类的某些对象是否已被创建。

引用:https://www.runoob.com/cplusplus/cpp-classes-objects.html;http://c.biancheng.net/view/2201.html

——————————————————————————————————————————————————————

学习C/C++编程知识,如果你感觉自学的时候有困难,可以跟我们一起来交流讨论,C/C++编程,点击即可。

C/C++基础语法复习(二):C++ 面向对象编程,你需要知道的点相关推荐

  1. python基础语法复习[二] 函数、类

    python基础语法复习[二] 前言 一.函数 1.基本概念 2.一般实例 3.参数传递 (1)传不可变对象 (2)传可变对象 4.函数递归调用实例 (1)eg:实现字符串的反转: (2)递归思想画树 ...

  2. java基础语法(二)--单列模式

    java基础语法(二)--单列模式 /*** 功能:单列模式* @author Administrator**/ public class SingletonTest {public static v ...

  3. python基础语法(二)列表

    往期推荐: python基础语法(一)range函数 python基础语法(二)列表 前言 一.列表的创建与删除 二.列表的查询操作 1. 获取列表中指定元素的索引 2. 获取列表中的单个元素 3. ...

  4. Java基础语法(二)——数据类型

    文章目录 Java基础语法(二)--数据类型 一.int 整型类型 1.基本语法格式 2.数值范围 3.未定义时变量的默认初始值 4.注意事项 二. long 长整型类型 1.基本语法格式 2.数值范 ...

  5. Java基础学习——第六章 面向对象编程(下)

    Java基础学习--第六章 面向对象编程(下) 一.关键词:static 1. static关键字的引入 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new ...

  6. 编程类-----matlab基础语法复习(1)

    2019年美赛随笔记录: 具体功能:基础语法+基本运算+画图+矩阵+excel读取....... 所遇问题及其解决方案:         1.   que:matlab中plot画图无法复制下来图片? ...

  7. python设计一个函数定义计算并返回n价调和函数_音乐编程语言musicpy教程(第三期) musicpy的基础语法(二)...

    这个是我在github上给我的项目musicpy写的wiki,分为数据结构,基础语法,实际应用三大部分来为大家讲解这门音乐编程语言,主要是想给大家写一个musicpy的详细的教程与介绍,目前wiki只 ...

  8. C/C++基础语法复习(一):C++与C语言的区别,主要有这些!

    和C的区别: 1.概念: C++ 是一种静态类型的.编译式的.通用的.大小写敏感的.不规则的编程语言,支持过程化编程.面向对象编程和泛型编程. C++ 被认为是一种中级语言,它综合了高级语言和低级语言 ...

  9. 夯实基础,彻底掌握js的核心技术(二):面向对象编程(Object Oriented Programming)

    单例设计模式(Singleton Pattern) 1. 单例模式解决的问题: 表现形式: Var obj = {xxx; xxx, - } 2. 作用: 把描述同一件事物的属性和特征进行" ...

最新文章

  1. MYSQL注入天书之服务器(两层)架构
  2. 企业运维之域控篇(十)--SERVER 2003 迁移到 SERVER 2008 (异机)
  3. Win32 树视图控件的基本使用
  4. hdu 1115 计算多边形重心
  5. LINUX ltrace命令-用来跟踪进程调用库函数的情况学习
  6. CSS Grid布局(2)
  7. 《LabVIEW 虚拟仪器程序设计从入门到精通(第二版)》一2.6 小结
  8. python--一些特性
  9. python中numpy、matplotlib的引入及测试
  10. 1005 Spell It Right (20)(20 分)
  11. Android开发案例 设置背景图片轮播
  12. 【T+】win10/win11系统安装畅捷通T+Cloud专属云18.0
  13. android微信朋友圈相册背景,Android 仿微信朋友圈图片拖拽返回
  14. 简单爬虫爬取知乎日报并保存日报网页到本地
  15. Android NDK开发,使用ndk-build编译,写的太详细了
  16. html鼠标悬停多个效果,33个jQuery与CSS3实现的绚丽鼠标悬停效果
  17. 中国芝麻市场竞争规模及销售渠道分析报告2022-2028年版
  18. Sun jdk, Openjdk, Icedtea jdk关系
  19. linux的cd命名返回上级目录,返回根目录
  20. html加拼音注释,古诗加拼音注释版.doc

热门文章

  1. 9月计算机一级报名入口,北京市2018年9月计算机一级报名时间|网上报名入口【已正式开通】...
  2. oracle 导出数据 utl,使用utl_file做选择性数据导出
  3. grandle下载安装图解
  4. 如何调查一家公司是否靠谱?
  5. 2021年看得见的粉丝价值——五大平台KOL粉丝分析研究报告
  6. 正月初六 | 2月17日 星期二 | 快手体育拿下斯诺克赛事版权;华为推出“智慧养猪”方案;春节档总票房突破60亿元...
  7. c++计算园的面积与周长
  8. android辅助功能实现群发,Android 8.0实现发送通知的方法
  9. 管理活动目录域服务实训_2019级酒店管理专业前厅与客房服务校外课程实训总结篇...
  10. 王华(1985-),男,中国人民大学硕士生