C++——类的入门
来源:互联网 发布:java工程师简历项目 编辑:程序博客网 时间:2024/06/18 16:55
先借这个位置挂一下某大佬的博客:除了系围巾什么都会的dalao
在C++中,有一个叫做类的东西……鉴于我上课的时候大部分时间都在划水,所以只隐隐约约听到什么函数的封装啊,什么继承与派生之类的,完全不了解,眼看着就要期末了,不得不开始自救计划……
§类的格式
首先,还是一个老生常谈的问题:类,是什么,干什么的,怎么实现的?
什么是类呢?
简言之,在C++中,如果看到class关键字,那这个就是类的标志。
首先,我们选取被人吐槽嘲讽的谭书上的一道例题作为第一个栗子(其实谭书还是不错的,只是有少数错误,大家要理解毕竟这么厚的书,一点都不错还是很困难的)
选自第三版249页例题9.2:求体积
代码如下:
#include<bits/stdc++.h>using namespace std;class Box{public: Box(int,int,int); int volume();private: int height; int width; int length;};Box::Box(int h,int w,int len){ height=h; width=w; length=len;}int Box::volume(){ return(height*width*length);}int main(){ Box box1(12,25,30); cout<<"The volume of box1 is "<<box1.volume()<<endl; Box box2(15,30,21); cout<<"The volume of box2 is "<<box2.volume()<<endl; return 0;}
输出:
The volume of box2 is 9450
所以在此也提醒大家,一定要注意标点,无论是在写语文作文、英语作文还是代码的时候都要注意标点(这里突然想到我的英语老师曾经多次批评我乱用标点,比如在举例子的时候逗号经常用错)。
首先,还是针对这段代码本身谈一谈一些个人看法。
先看看第一段,有位大佬跟我介绍——类和结构体差距不大。所以我们可以很容易在类中看到结构体的影子。比如:
①
Box::Box(int h,int w,int len)
③
大家都有看到两个关键字:public和private,具体的作用,如这两个英语单词本身的意思所示:
class 类名 { public: //公共的行为或属性 private: //公共的行为或属性 };
※注意:public 与private 为属性/方法限制的关键字, private 表示该部分内容是私密的, 不能被外部所访问或调用, 只能被本类内部访问; 而 public 表示公开的属性和方法, 外界可以直接访问或者调用。
一般来说类的属性成员都应设置为private, public只留给那些被外界用来调用的函数接口, 但这并非是强制规定, 可以根据需要进行调整;
还有---->不要忘了☞☞☞最后有一个分号//就像结构体一样
#include <iostream> using namespace std; class Box{ public: double length; // 长度 double breadth; // 宽度 double height; // 高度}; int main( ){ Box Box1; // 声明 Box1,类型为 Box Box Box2; // 声明 Box2,类型为 Box double volume = 0.0; // 用于存储体积 // box 1 详述 Box1.height = 5.0; Box1.length = 6.0; Box1.breadth = 7.0; // box 2 详述 Box2.height = 10.0; Box2.length = 12.0; Box2.breadth = 13.0; // box 1 的体积 volume = Box1.height * Box1.length * Box1.breadth; cout << "Box1 的体积:" << volume <<endl; // box 2 的体积 volume = Box2.height * Box2.length * Box2.breadth; cout << "Box2 的体积:" << volume <<endl; return 0;}
§类的继承和派生
还是先安利一个c++类的继承和派生
老师上课举例子说到了基因突变(我觉得还是应该感谢老师没有说出染色体变异和基因重组,要不然我会感觉到回到可怕的高三)
其实……
这个跟继承差不多吧,比如我的父母生了我,然后我从父母那里得到的性状就是继承。
然后我们可以把继承理解为一个动词,其结果是一个名词,也就是派生。
一、基本概念
1、类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或子类。
2、派生类的声明:
class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n
{
派生类成员声明;
};
3、一个派生类可以同时有多个基类,这种情况称为多重继承,派生类只有一个基类,称为单继承。直接派生,间接派生。
4、继承方式规定了如何访问基类继承的成员。继承方式有public, private, protected。如果不显示给出继承方式,默认为private继承。继承方式指定了派生类成员以及类外对象对于从基类继承来的成员的访问权限。
5、派生类继承基类中除构造和析构函数以外的所有成员。
6、派生类生成:
吸收基类成员(除构造析构函数以外的所有成员);
改造基类成员(根据继承方式调整基类成员的访问,函数在子类中的覆盖,以及虚函数在子类中的覆盖);
添加新的成员;
7、公有继承
当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中不变,而基类的私有成员不可访问。即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有成员和保护成员。派生类的其他成员可以直接访问它们。无论派生类的成员还是派生类的对象都无法访问基类的私有成员。
8、私有继承
当类的继承方式为私有继承时,基类中的公有成员和保护成员都以私有成员身份出现在派生类中,而基类的私有成员在派生类中不可访问。基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问它们,但是在类外部通过派生类的对象无法访问。无论是派生类的成员还是通过派生类的对象,都无法访问从基类继承的私有成员。通过多次私有继承后,对于基类的成员都会成为不可访问。因此私有继承比较少用。
9、保护继承
保护继承中,基类的公有成员和私有成员都以保护成员的身份出现在派生类中,而基类的私有成员不可访问。派生类的其他成员可以直接访问从基类继承来的公有和保护成员,但是类外部通过派生类的对象无法访问它们,无论派生类的成员还是派生类的对象,都无法访问基类的私有成员。
嗯,大致就先到这里啦,之后想到还会接着写的(*╹▽╹*)
- C++——类的入门
- 学习C++——入门
- C语言入门学习——函数的使用
- C语言编程入门——if的用法
- C语言入门——逆序的三位数
- 学习计算机的入门语言——C语言
- C C++语言—入门必做的题
- C#教程第七课:类的入门
- C#教程 第七课:类的入门
- C#教程第七课:类的入门
- C#教程第七课:类的入门
- C语言的本质(15)——C语言的函数接口入门
- C语言的入门
- C#-- 入门的困惑
- c的入门
- C语言的入门
- C语言的入门
- 由C++入门Objective-C——Objective C 的语言特性
- 详解SpringMVC请求的时候是如何找到正确的Controller[附带源码分析]
- 《机器学习实战》学习笔记(十一):线性回归基础篇之预测鲍鱼年龄
- Jmeter脚本录制
- bzoj1047 [HAOI2007]理想的正方形 单调队列
- 百度地图和高德地图key错误
- C++——类的入门
- 使用 Media Creation Tool 下载 Win10 系统
- jQuery获取元素宽高(内边距、边框和外边距)
- linux设置服务开机自启动的三种方式
- oracle rman备份与ORA-19504&ORA-27040&RMAN-03009
- 最长递增子序列(nlogn)
- 计算机网络相关常识
- js里面JSON格式的字符串转成JSON对象
- 2017-12-22 选做题1