感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步
文章目录
前言
之前讲c++的命令空间和第一个程序的运行,继续讲解一下c++的语法,然后开始进入类和对象的学习
一.引用
引用变量,是c++区别与c语言的语法,引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
引用:可以看作一个已定义变量的别名
引用变量的创建
Type&name=var;
int main() { int a = 10; int& b = a; cout << b << endl; return 0; }
意思就是说初始化了一个A的变量,在创建一个引用变量B,然后把A赋给B,那我现在操控B就是在操控A
但是引用在使用的时候还远一些注意的事项
注意:
1.&不是取地址,而是起标识作用
2.必须在声明引用变量时进行初始化
3.引用初始化之后,不能再引用其他的变量了
4.不能有NULL引用
引用变量的本质
有人会说引用到底是什么东西,为什么可以这样赋值,引用到底有什么用?
引用的本质:是一个常量指针,引用所占用空间大小与指针相同
int main() { int b = 0; int& a = b;//==int *const a=&b; a = 20;//*a=20; return 0; }
引用作为函数的参数(不需要进行初始化)
引用的作用比较经典的就是可以作为函数的参数
typedef struct Teacher { int age; }Te; void Print(Te& t) { t.age=32; } int main() { Te t; t.age = 30; Print(t); cout<<t.age<<endl; return 0; }
这是一个很经典的代码,你们先思考一下之后打印出来的纸是30还是32?这个也完全验证了应用的本质到底是什么
我用的是.直接访问了这个函数的值,为什么会改变?出了这个函数不是应该会被销毁吗?
上面的代码把他转化一下,引用的本质:是一个常量指针
typedef struct Teacher { int age; }Te; void Print(Te*const t) { t->age = 32; } int main() { Te t; t.age = 30; Print(&t); cout << t.age << endl; return 0; }
二.内联函数
定义:
内联函数本身也是一个真正的函数,唯一不同之处在于会在适当的地方向预处理宏一样展开,所以不需要函数调用开销。
创建
内联函数:在普通函数之前加上inline关键字
inline int fun(int a) { return a++; }
作用
以前我们写过一个宏函数的对比,如果进行一些简单的函数实现的话,就不用纠结使用宏还是函数的,直接用内联函数就可以了
注意:
1.内联函数的声明和定义要在一起
2.注意事项以下情况不会将函数进行内联编译
3.存在任何循环语句
4.存在过多的条件,判断语句
5.对函数取地址(内联函数没有函数的调用开销,取地址必然错误)
6.函数体过于庞大
默认参数
在c++的语法中,是有一个默认参数的功能,就是说你函数传递参数的时候可以只传一个或者少传几个,但是前提是你得把默认的参数写好,顺序不可出错,不然还是不行
//默认参数 float func(int r, float pi = 3.14) { return pi * r * r; } int main() { float r=func(10);//可以只传一个数 cout << r << endl; }
如果是这样就不可以
float func(int r=3, float pi ) { return pi * r * r; } int main() { float r=func(10);//可以只传一个数 cout << r << endl; }
函数重载
函数重载:1.用同一个函数名定义的不同函数2.当函数名和不同参数的搭配。
条件:同一个作用与参数个数不同,参数类型不同,参数的顺序不同
#include<iostream> using namespace std; void func() { cout << "func()"<< endl; } void func(int a) { cout <<a<< endl; } void func(int a,double b) { cout <<a<<b<< endl; } void func(double a,int b) { cout <<a<<b<< endl; } int main() { func(); func(1); func(1, 1.2); func(1.2, 1); return 0; }
三.类和对象
C和C++他们两个语言得很重要的区别,就是一个是面对过程的编程,一个是面对对象的编程,所以我们这次才简单地了解一下对象和类
类的定义与访问
class nameA { public://访问控制符 private pretected //成员变量//属性 //成员函数//方法 };
例子,创建一个动物类
class animal { public: char name[32]; int age; void jiao(const char* voice) { //内部name cout<<name<< voice<<endl; } };
对象的实例化
有3种
实例化普通对象,用数组实例化多个对象,定义一个指针对象
//对象的实例化
animal cat;
animal cat[10];
animal* cat;
类成员的访问控制
private----私有(只能在类的内部访问)要修改需要通过内部来改,public------公有(在类的内外部都可访问),protected------保护(只能在类的内部访问)
内部外部是什么??
class animal { public: char name[32]; int age; void jiao(const char* voice) { //内部name cout<<name<< voice<<endl; } }; int main() { //对象的实例化 animal cat; cat.age = 1;//外部 cat.jiao("xia"); return 0; }
例题
如果要改变被private里面的对象改怎么办?
思路:要修改需要通过内部来改
class animal { public: char name[32]; void set_age(int age) { _age = age; } int get_age() { return _age; } private: int _age; }; int main() { animal cat; cat.set_age(1);//外部 int a = cat.get_age(); cout << a << endl; return 0; }
总结
这次我们讲解了C++的语法引用,内联函数,类和对象等下次就要正式进入C++的类和对象了,这次大改的了解了一下,下次就要真正的感受到面对对象编程的魅力了