引用语法:
1、常引用 int x=1; const int &y=x; //变量引用只读属性 不能通过y修改x
2、用字面量初始化
const int x =1;//C++编译器把x放在字符表中
const int &x=1;//C++编译器会主动给字面量分配内存
// int &x=1;//普通字面量没有对应的内存空间,所以不能这么用
#函数指针基本语法主要分为以下三种:
//声明一种函数类
1、typdef void (myTypFunc)(int a,int b);
//myTypFunc *myfuncp = NULL; //定义一个函数指针 这个指针指向函数入口地址
//声明一个函数指针类型
2、typdef void(*myPtypFunc)(int a,int b);//声明一个指针的数据类型
//myPtypFunc fp = NULL; //通过函数指针类型定义一个函数指针
//定义一个函数指针变量
3、void (*myvarPFunc)(int a,int b);
构造函数和析构函数
1、定义对象时自动调用构造函数,对象生命周期结束自动调用析构函数
先创建 后释放
Test(){
cout<<“我是一个构造函数,被执行了””<<endl;//无参数 无返回值的构造函数
}
~Test(){
cout<<“我是一个析构函数,被调用了”<<endl;析构函数
}
2、用途:
构造函数:完成对属性的初始化工作
析构函数:释放资源
3、分类:
无参构造函数、有参构造函数
赋值(拷贝)构造函数:用一个对象初始化另一个对象 Test(const Test1& obj);
默认构造函数
4、调用方法
①括号法 Test t1(1,2);
②=号法 Test t1=5;
③直接调用 手动调用构造函数 Test t2=Test(1,2);(对象初始化) t1=t2;(对象赋值)
NEW和delete
C语言 malloc free
int p = (int)malloc(sizeof(int)* 10);
free(p);
C++ new delete
int *p = new int[10];
两者区别之一:malloc和free不会调用对象构造函数和析构函数
静态成员变量和成员函数
类的static成员变量为所有该类所属的对象共有
静态成员函数不能使用普通成员变量 普通成员函数
C++面向对象模型、This指针
void const test(int a,int b);无论const在哪个位置,修饰的都是This指针所指向的内存空间,加入a,b是test的两个成员变量,则无法进行This->a=200;这种修改操作
友元函数和友元类
关键字 friend 位置与public private没有关系
采用友元函数可以实现通过对象参数访问对象私有属性(感觉和公有方法功能差不多??)
B是A的友元类,则B中所有所有成员函数都是A的友元函数,B可以通过A对象直接修 改A对象的私有参数
友元函数和友元类破坏了类的封装性,但是在有些实际应用场景需要破坏类的封装性,所有相当于程序的后门。
运算符重载
关键字:operate(使用例子加号重载operate+)
从全局函数出发写运算符重载( 运算符重载的本质是一个函数)
①运算符重载函数名定义
②首先承认操作符重载是一个函数 定义函数名operator++
③分析函数参数 根据左右操作数的个数,operator++(Complex &c1)
④分析函数返回值 Complex& operator++(Complex &c1) 返回它自身