类和对象
基本思想
面向对象编程:就是属于吧构成问题的各个事物分解成各个对象,建立对象不是为了完成一个步骤,而是为了描述一个事物在整个解决问题的步骤中的行为。
面向对象三大特征:封装、继承、多态。
任何一个对象都具有的两要素:
属性(静态特征)
行为(动态特征)
面向对象的程序组成:
对象 = 算法+数据结构
程序 = (对象+对象+对象+对象+…)+消息
消息:作用是对对象的控制
类的实现
什么是类?
对象的类型称为类(class)。
类代表了某一批对象的共性和特征。
类是对象的抽象,而对象是类的具体实例。
类中三种词:
private、public、protected
类中的静态成员函数:(static修饰)
当我们把一个数据成员的存储类型指定为静态类型时,则该类产生的所有对象其静态成员均共享一个存储空间,这个空间时在编译的时候分配的。
静态成员定义:
类内定义,类外说明。
静态成员函数(重点):
构造函数、析构函数、拷贝函数
构造函数:是创建对象时,用来给对象初始化。
构造函数是类的成员,系统约定构造函数名与类名相同。
创建对象指针:
析构函数:在对象生命周期结束时,释放系统为对象所分配的空间,即撤销一个对象。
析构函数也是类的成员。
拷贝构造函数:就是复制构造函数。
它的形参必须是引用,但不限制为const,通常会加上const。
如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。+
c++友元与动态内存
友元是定义在类外部的普通函数或类,但需要在类体内进行说明,在说明前加上 friend。
友元不是成员函数,但是它可以访问类中的私有成员和保护成员。
格式:
friend<type> FuncName(<args>);
举例代码如下:
友元类:
一个类作为宁一个类的友元,意味着,这个类的所有成员函数都是宁一个类的友元函数,都可以进行访问。
语句定义: friend class 类名(友元类的类名)
此时,b 中就可以调用 a 的数据。
动态内存:(new 关键字)
如下代码:我们开辟后,得删除,避免内存泄漏。
函数重载和运算符重载
格式: operator+ (此处为运算符)
运算符重载举例如下:
下面代码是对 ++ 运算符的重载,一个前置一个后置。
#include <bits/stdc++.h>
using namespace std;
class Ctestss
{
public:
Ctestss():i(0){}
Ctestss operator++()
{
cout << "diaoyong " << endl;
Ctestss obj;
obj.i = ++i;
return obj;
}
Ctestss operator++(int) // 括号中插入int 表示后缀
{
cout << "2::::::: " << endl;
Ctestss obj;
obj.i = i++;
return obj;
}
void disp()
{
cout << "\n i = " << i << endl;
}
private:
int i;
};
int main()
{
Ctestss boj1, obj2;
//obj2 = ++boj1;
//boj1.disp();
//obj2.disp();
obj2 = boj1++;
boj1.disp();
obj2.disp();
return 0;
}