函数与类和对象

1.函数默认参数

如果我们自己传入数据,就用自己的数据,如果没有,那么用默认值

语法: 返回值类型 函数名(形参=默认值){}

注意事项: 如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值

int func(int a, int aa = 34, int bb = 56) {

return a + aa + bb;

}

如果函数声明有默认参数,函数实现就不能有默认参数

//声明和实现只能有一个有默认参数|

int func2(int a=13, int b=12);

//错误

int func2(int a = 10, int b = 10) {

return a + b;

}

2.函数占位参数

C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置

语法: 返回值类型 函数名(数据类型 ) {}

//占位参数还可以有默认参数

void func3(int , double = 34) {

cout << "" << endl;

}

3.函数重载概述

作用: 函数名可以相同,提高复用性

函数重载满足条件:

·同一个作用域下

·函数名称相同

·函数参数类型不同或者个数不同或者顺序不同

注意: 函数的返回值不可以作为函数重载的条件

函数重载的注意事项

1、引用作为重载的条件

void haha(int &a) {

cout << "hahaOne" << endl;

}

void haha(const int &a) {

cout << "hahaTwo" << endl;

}

int a = 99;

haha(a);

haha(99);

2、函数重载碰到默认参数

void hfds( int a ,int b=10){

cout << "hfds one" << endl;

}

void hfds(int a) {

cout << "hfds Two" << endl;

}

hfds(2);//错误

4.类和对象

C++面向对象的三大特性为:封装、继承、多态

C++认为万事万物都皆为对象,对象上有其属性和行为

人可以作为对象,属性有姓名、年龄、身高、体重....,行为有走、跑、跳、吃饭、唱歌...

车也可以作为对象,属性有轮胎、方向盘、车灯....行为有载人、放音乐、放空调...

具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类

4.1封装

封装是C++面向对象三大特性之一

封装的意义:

将属性和行为作为—个整体,表现生活中的事物

将属性和行为加以权限控制

封装意义一: 在设计类的时候。属性和行为写在一起,表现事物

语法 : class 类名 { 访问权限: 属性/行为;}

const double P = 3.14;

//class 代表设计一个类,类后面紧跟着技术类名称

class Circle {

//访问权限

//公共权限

public :

//属性

//半径

double r;

//行为

//获取园的周长

double cirel() {

return r * 2 * P;

}

};

//通过圆类 创建具体的圆(对象)

//实例化(通过一个类创建一个对象的过程)

Circle cc;

cc.r = 5;

cout << "园的周长" << cc.cirel() << endl;

三种权限

公共权限 public 类内可以访问 类外可以访问

保护权限 protected 类内可以访问 类外不可以访问

私有权限 private 类内可以访问 类外不可以访问

struct和class区别

在C++中struct和class唯一的区别就在于默认的访问权限不同

区别:

struct 默认权限为 公共

class 默认权限为 私有

成员属性设置为私有

优点1: 将所有成员属性设置为私有,可以自己控制读写权限

优点2: 对于写权限,我们可以检测数据的有效性

class Person

{

public:

//设置姓名

void setName(string name)

{

m_name = name;

}

string getName()

{

return m_name;

}

//设置年龄 可读可写 如果想修改(年龄的范围必须是o ~150之间)

int getAge()

{

return m_age;

}

void setAge(int age) {

if (age < 0 || age>150)

{

m_age = 0;

cout << "哈哈哈" << endl;

return;

}

m_age = age;

}

//设置地址 只写

void getAdress(string adress)

{

m_address = adress;

}

private:

//姓名:可读可写

string m_name;

//年龄 只读

int m_age;

//地址 只写

string m_address;

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值