- 1、引用
- 1、引用的概念
- 2、引用作为函数参数
- 3、引用的本质
- 2、函数的一些用法
- 1、函数的默认参数
- 2、函数的占位参数
- 3、函数的重载
- 3、类和对象
- 1、基本含义
- 2、封装
- 3、c++一个类的示例
c语言中有结构体别名,还有一些类型别名,感觉有点像,具体的可以看下面的例子
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
下面的例子中实现了一个别名:
代码如下:
#includeusing namespace std; int main() { //引用基本语法 int a = 10; int &b = a;//这里创建了引用 cout << "a = " << a << endl; cout << "b = " << b << endl; b = 100; cout << "a = " << a << endl; cout << "b = " << b << endl; system("pause"); }
引用这里有一些注意事项:
- 引用必须要初始化
- 引用一旦初始化之后就不可以被修改,注意这里是引用不能被修改,赋值操作是可以的
详情如下所示:
函数中传递的都是形参,我们知道形参的传递会带来很大的问题,我们一般的解决方式是使用指针来完成这一目的,但是使用引用也可以用形参来修饰实参,这样一定程度上可以替代指针的方式。
下面是使用三种方式来实现交换变量
结果如下,可以看到使用引用也可以改变变量。
引用的本质是一个指针常量,例如我们创建下面的函数:
void func(int& ref)
{
ref = 100;
}
其实就是等效于:
*ref = 100;
再比如我们定义一个数据,用一个引用来做他的类型别名:
int a = 10; int &ref = a; ref = 20;
其实就等效于:(这里是指针常量,这也说明了为什么引用不可以修改但是可以被赋值。)
int * const ref = &a;2、函数的一些用法 1、函数的默认参数
这个就根python里面的默认参数差不多,使用默认参数的效果如下:
当然默认参数也是可以修改的
但是使用默认参数也要注意,不要错误使用,比如下面的情况:
另外要注意的是函数声明和函数实现这里
是一种参数形式,用来做占位,函数调用的时候需要补全这个参数,如下所示:
为了提高函数的复用性,使用相同的函数名,函数重载的条件为:
- 在同一个作用域
- 函数名称相同
- 函数的参数类型或者个数或者参数的顺序不能相同
如下所示:
运行的结果如下所示:
这里注意,如果只是返回值不同是没有用的,这不符合我们之前设置的条件!
3、类和对象 1、基本含义C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。
类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。(和结构体有点像哈)
下面是一个类的组成:
2、封装下面我们定义一个学生类,如下所示:
其中public表示是公共权限,类中所有的属性和行为称为成员,其中:
- 属性分为:成员属性和成员变量
- 行为分为:成员函数和成员方法
下面我们在主函数中进行操作,如下所示:
这里我们可以直接用成员属性进行赋值,也可以用成员方法来实现,运行如下所示:
源代码如下:
#includeusing namespace std; #include class Student { public: void setName(string name) { m_name = name; } void setID(int id) { m_id = id; } void showStudent() { cout << "name: " << m_name << " ID: " << m_id << endl; } public: string m_name; int m_id; }; int main() { Student stu; //stu.m_name = "ffdsaf"; //stu.m_id = 110; stu.setName("dfsfdf"); stu.setID(110); stu.showStudent(); system("pause"); }
上面只用到了公共权限,不过还有其他两种权限,下面来看其他两种,分别是:
- 保护权限:protected 类内可以访问,类外不能访问
- 私有权限:private 类内可以访问,类外不能访问
下面的例子进行了解释:
然后还有一些注意的,例如struct和class创建类的区别
就是一个私有权限和公共权限的区别,不过一般还是class这种方式用的比较多一点:
下面是成员属性私有化的样例
大概思路就是成员私用私有化进行定义,然后公共权限里面设置读写函数来实现,如下所示:
从上面的例子来看,将成员属性私有化的优点在于:
- 可以自己控制读写权限
- 对于写的权限,可以检测数据的有效性
具体的案例如下所示,其中上面的一个方法实现了写的功能,下面的实现了读的功能:
运行结果如下所示:
下面来设计一个立方体类,设计如下:
运行结果如下所示:



