C++入门篇五

默认参数:


//默认参数
//函数的默认参数,参数后面有'='
//函数参数注意事项,如有一个位置有了默认参数
//那么从该位置的后面就必须要有参数

void func(int a, int b = 10, int c = 4) {
//b有默认参数,b的后面也应该要有默认参数,只要有一个位置有,那么之后的也必须要有
//如果有传入参数,那么就以传入参数为准,如果没有就是默认参数
//函数声明和实现只能出现一次默认参数
}
void  func(int a, int b = 34, int c = 34);//函数声明和函数实现只需要出现一次默认参数就可以
void  func(int a, int b = 4, int c = 34){}
func(12,5);//会传入两个参数,a=12,b5,c=34,c的话会使用默认参数

 

 

占位符:

//占位参数
//如果有了占位参数,函数调用的时候必须要提供这个参数
void  fun2(int a, int) {//有了占位符,必修要传入两个参数

}
在c语言中没有默认参数和占位参数



函数重载
C++中函数名称可以重复
必须在同一个作用域内,函数名称相同

void  test01() {//不在一个作用域之内

}
class fun {
    void  test01() {
    }
};

函数的参数个数不同或者类型不同或者顺序不同
函数重载碰到了默认参数的问题,要注意二义性的问题
引用必须要引入合法的内存空间 ,const可以开辟内存空间
const也可以作为函数重载的判断条件

void  test02(int  &p) {
}
void  test02(const  int &p ) {}//const会开辟一个内存空间,所以在这里被接收到
test02(5)
//函数的默认参数,避免二义性
void  fun(int  a, int  c=4) {
}
void  fun(int a) {
}
fun(4);//此时有一个函数是带有默认参数的,二义性,不知道如何选择

函数重载原理:

编译器为了实现重载,编译器会用不同的参数类型来修饰不同的函数名,比如void  func(),编译器可以回将函数名修饰成_func

编译如果修饰重载并没有特同同统一的标准

 

封装:

//C++中的封装严格类型转换检测,让属性和行为绑定到一起
//属性和行为作为一个整体来表示一个事务

#include  "pch.h"
#include  <iostream>
using  namespace  std;
#include <string>

struct  Person
{
    int   age;
    char  name[4];
    void  Personeat() {
        cout << "Person:" << name << "吃饭" << endl;
    }
};
//定义两个结构体
struct   Dog
{
    char  name[5];
    void  Dogeat() {
        cout << name << "吃饭" << endl;
    }
};
void  test01() {
    Person  p1;//p1只能是Person的对象,里面只有person结构体的属性和方法,没有另一个结构体的
    strcpy_s(p1.name, "yun");//把这后面的字符封装进去
    p1.Personeat();//这个是已经在执行cout了

} int main() { test01(); }

posted @ 2019-04-10 04:46  风不再来  阅读(131)  评论(0编辑  收藏  举报