auto、初始化方法、函数重载、缺省值、追踪返回类型、类相关的函数、this指针、访问权限、友元等

auto
auto i = 3;        //i是int
auto j = 4.0f;     //j是float

auto 让编译器自己通过上下文确定变量类型

初始化方法的列表
int a[]={1,2,3};
int a[]{1,2,3};//和上面的等效;

int a = 3+5;
int a = {3+5};
int a(3+5);
int a{3+5};//以上四个等效

int *i = new int(10);    //这个int的初始值是10;
double * d = new double{1,2f};//同上
函数重载

指在同一作用域内,可以定义多个同名函数。这些同名函数的参数必须有差别(类型、个数、顺序都行)。主要作用是提高代码复用性和灵活性。

void print(char*msg){
    cout<<"message:"<<msg<<endl;
}
void print(int score){
    cout<<"score="<<score<<endl;
}

这时候,通过传入的函数变量的差别,选择执行不同的函数。

函数参数的缺省值

也就是在函数的参数小括号里面,给这些参数设置个初始值【默认值】。如果在调用的时候不传入参数,那么就会默认使用设置的初始值。但是!!所有有默认值的参数,必须在没有默认值参数的后面。

追踪返回类型的函数
auto func(char*ptr,int val)->int;
//==int func(char*ptr,int val);

格式就类似上面的样子。主要解决的就是,当返回值需要函数参数决定的时候。

auto add(int a,int b)->decltype(a+b){
    return a+b;
}

在上面的函数里,最终的返回类型是通过a+b这个表达式进行确定的(即int)。

类class

让用户自定义、包含【函数】(成员函数)和【数据】(数据成员)的特殊的“结构体”。

类里面的成员可以根据需要分为public\private\protected三种访问权限。

面向对象最后面向的对象,其实就是用类定义的变量。也就是,一个变量,它由一个类(class)定义,它有自己的成员函数、数据成员,然后这个一整体的它,就是面向的【对象】。

通过【对象名.成员名】的方式调用这个对象中的权限为public的成员(函数和数据都行)

定义类的函数

1.类外定义

【类型名 类名::函数名(参数){}】

//进行函数实现的cpp文件
#include "matrix.h"
void Matrix::fill(char dir){}

2.类内定义(其实就是很平常的函数定义)

this指针【妈妈我总算搞懂啦!!】

是编译器默默的帮我做了这么一件事。它无私地命名了一个 指向 这个对象 的指针,叫做this。将这个指针看成普通指针即可。【需要注意一点的是,这个指针是对象内自带的。对象自己使用this来代指自己。通过this->data来访问这个对象自己内的数据成员】

访问权限【它它它到底有什么用啊啊啊!!】

不声明则默认为private。

如果操作了private的数据,就会显示编译错误。

友元【用于解决访问私有成员】(一般不这么干)

私有成员是非常害羞的成员。所以需要在对象里告诉私有成员,谁谁谁是你的朋友,它对你很友好,你可以放心大胆去接触它。然后就有了:

#include<iostream>
using namespace std;
class Test{
    int id;    //默认private;
public:
    friend void print(Test obj);
    ...
};

void print(Test obj){
    cout<<obj.id<<endl;
}

【累了,2024.2.5停笔... 啊啊啊什么时候是个头哇... 今天陪老婆吃了海底捞,没想到饭量还是一如既往的小。惹老婆生气了但最后发现是一场误会,还是相亲相爱的。希望早点“编程自由”,这样就不用纠结学习和陪老婆的时间配比了呜呜呜😭😭😭】

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值