多文件链接
- 命令行
- make的使用
变量定义
- auto的使用 相关学习网址
- 机理:根据后面的赋值,推测变量类型
- 作用:简化变量初始化的书写,例如迭代器
- 注意:
- 指针 new/delete 相关学习网址
- 左值引用 相关学习网址
- 右值引用 相关学习网址
变量的初始化、类型的推导、基于范围的for循环
- 初始化列表
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);
double *q=new double{1.2f};
- 变量类型的推导
struct{char *name;} anon_u;
struct{int d;decltype(anon_u)id;} anon_s[100];
int main{
decltype(anon_s)as;
cin>>as[0].id.name;
...
}
- 基于范围的for循环
int arr[]={1,2,3};
for(auto e:arr) cout<<e<<endl;
函数的重载
函数参数的缺省值与追踪返回类型的函数
- 函数参数的缺省值
- 追踪返回类型的函数
-
普通声明: int func(char *ptr,int val);
-
追踪返回类型的函数声明: auto func(char *ptr,int val) -> int;
auto func(char *ptr,int val);
-
作用:若函数返回值未知,且需根据函数参数推导,则可使用这种写法 template<typename T1, typename T2>
auto Sum(T1&t1, T2& t2) -> decltype(t1+t2){
return t1+t2;
}
类的定义
-
自定义类型,包含函数与数据 -
类中函数——成员函数 -
类中成员——数据成员 -
类的成员(数据、函数)可拥有不同的访问权限 -
权限种类:public、private、protected
class Matrix{
public:
void fill{char dir);
private:
int data[6][6];
};
class Matrix{
int data[6][6];
public:
void fill{char dir);
};
-
对象:用类定义的变量 -
调用形式:对象名.成员名(仅限public) -
类外定义成员函数时,要加类名限定,格式:类名::函数名( :: 域运算符) -
成员函数的两种定义:
Class Matrix{
Public:
void fill(char dir){
…;
}
};
Void Matrix::fill(char dir){
…;
};
-
类中默认一个指针this(编译器产生),指向本身对象存放的地址,用”->”访问 -
友元函数:
- 可访问类的private成员
- 类型:friend 函数原型;
- 特点:
- 会破坏封装性
- 与声明位置无关
构造函数
|