面向对象编程
类-abstraction
C++类和结构体
三种类类型是结构、类和联合。 它们使用 struct、class 和 union 关键字进行声明。
类和结构是用于定义你自己的类型的构造。 类和结构都可以包含数据成员和成员函数,
概念: 匿名类类型。基类 派生类
类声明
数据成员--data member
成员函数 member function (函数和运算符) 构造函数 析构函数 具名函数 重载运算符
初始化类成员
template class
non-template class
基类的成员加上派生类添加的任何新成员组成
关键字-- class
访问说明符(public、private、protected)和 virtual 关键字
private 声明为 private 的类成员只能由类的成员函数和友元(类或函数)使用。
protected 声明为 protected 的类成员可由类的成员函数和友元(类或函数)使用。 此外,它们还可由派生自该类的类使用。
public 声明为 public 的类成员可由任意函数使用。
公共静态成员仍是可访问的。 但是,使用指针、引用或对象访问基类的成员需要转换,此时将再次应用访问控制
适用于 virtual 函数的访问控制是由用于进行函数调用的类型决定的。 重写函数的声明不会影响给定类型的访问控制
如果类型具有隐式或显式声明的默认构造函数,你可以使用大括号初始化(具有空大括号)对其进行调用。
例如,可通过使用空大括号和非空大括号初始化来初始化以下
Pimpl 是“指向实现的指针”的缩写。
C++ class
class 声明 class Stack; 前置声明-告诉编译器
class 定义 class 声明+ 一对大括号括住的主体和分号结尾
成员函数必须在主体内进行声明,
如果在主体内定义,则member function 自动视为inline函数-内联函数
如果在主体外定义,这成员函数需要加上类作用域解析符以及类名
inline member function
non-inline member function
构造函数--没有返回值和class名称相同--可以被重载 overloaded,default没有参数的析构函数,不带括号
如果我们不提供构造和析构,编译器会提供默认的空实现构造和析构
-- 成员初始化列表
C++标准库中的相关类声明中explicit出现的频率是很高的, explicit 为清晰的;明确的之意.顾名思义,关键字explicit可以阻止隐式转换的发生.
类的声明和定义分别在两个文件中时,explicit只能写在在声明中,不能写在定义中
C++声明和实现分离
声明 + 实现 + 使用
在C++中,数据结构及函数的声明与实现进行分离的方式有两种:①.h、.cpp;②.hpp。
.hpp文件是Header Plus Plus的简写
.hpp文件是C++程序的头文件 .hpp文件一般是模板类的头文件
在①中,.h用于数据结构及函数的声明;.cpp用于数据结构的初始化及函数的具体实现。
在②中,.hpp即负责数据结构及函数的声明,同时负责数据结构的初始化及其函数的具体实现
.hpp文件的使用场景中,由于定义与实现都已经存在于一个文件,调用者必需明确知道被调用者的所有定义,而不能等到.cpp中去编译
C++结构体
在 C 中,必须显式使用 struct 关键字来声明结构。 在 C++ 中,不需要在定义该类型之后使用 struct 关键字
在c++中 struct 和 class 唯一的区别就在于默认的访问权限不同 struct: 默认权限为公共 class: 默认权限为私有
java面向对象
1.封装 :把该隐藏的隐藏起来,把该暴露的暴露出来--Java提供的访问控制符来实现
01.属性私有,方法封装
this用来访问类成员变量,用于区分类成员变量和方法中的参数
static修饰的方法中不能用this引用,并且Java语法规定,静态成员不能直接访问非静态成员
02.接口将方法声明与实现分离,一个接口可以有多个实现类,一个类也可以实现多个接口。
接口和实现分开或者说只对外公布用户要使用的接口, 而其实现则对用户隐藏起来. 这是一个框架应该做的事情, 也是Java的一个重要特性 —— 封装.
实现接口用implements关键字
2.继承
继承的语法形式是class 子类名 extends 父类名,继承类就是子类,也叫派生类,被继承的类称为父类,基类或者超类
super 关键字 this
抽象类是指被abstract修饰,包含抽象方法的类
抽象方法
当一个普通类继承一个抽象类的时候需要重写抽象类的所有抽象方法,如果不想重写的话就需要声明为抽象类
3.多态
用接口实现多态 java实现接口和继承类的一个很大区别就是一个类只能继承一个类,但是一个类可以实现多个接口
参考
C++ Primer plus
标签:函数,实现,成员,C++,声明,class,结构
From: https://www.cnblogs.com/ytwang/p/17025133.html