C到C++

1.C到C++

头文件
—.h变成c—多了<iostream库输入输出流,<algorithm库提供了一次常用的算法(min,max,swap…)
using namespace std;
一个名称空间,用来缓解复杂程序的组织问题
C++支持函数的重载,可以用张三:函数(),李四:函数()的方式调用,有了名称空间,就不用std::set等等了直接set

2.引用&,参数按照传引用的方式传递出来
void swap2(int&a,int&b){
int t = a;
a = b,b = t;
}
3.字符串

<sstream库,之前写了一篇,里面有讲解,string,sstream更慢,应谨慎使用

string line;
getline(cin,line);
int sum = 0,x;
stringstream ss(line);
while(ss>>x)sum+=x;
cout<<sum<<endl;
4.再谈结构体struct新加的概念同样适用于类class

挂一篇【C++】C++还能这么用–结构体构造函数、成员函数、创建链表,我看后对结构体的各个影响更加加深了

成员变量

int age ;
string name;…

成员函数

在C++结构体的成员函数中,this是指向当前对象的指针

构造函数实现(Point() == Point(0,0))

实现Point a,b(1,2);的初始化
结构体Point中定义了一个函数,函数名也为Point,但是没有返回值,这样的函数称为构造函数
C++结构体可以有一个或多个构造函数,在声明变量时调用
C++中的函数(不只是构造函数)参数可以拥有默认值

template <typename T>
struct Point{
	T.x,y;
	Point(T x = 0,T y = 0):x(x),y(y){}
	//也可写成
	Point(T x = 0,T y = 0){this->x = x;this->y = y;}
}
添加对结构体和类的运算符定义
template <typename T>
struct Point{
	int x,y;
	Point(int x = 0,int y = 0):x(x),y(y){}
}

Point operator +(const Point&A,const Point&B){//定义运算符
return Point (A.x+B.x,A.y+B.y);
}

ostream& operator << (ostream &out,const Point*p){//定义输出流
out<<"("<<p.x<<","<<p.y")";
return out;
}

int main(){
	Point a,b(1,2);//由于构造函数从而这样定义结构体变量
	a.x = 3;
	cout<<a+b<<endl;
}
5.模板

减少函数的局限性,使int,double,等类型数组都可以求和

template<typename T>//所有类型都换成T,之后就可对所有类型进行运算了
T sum(T*begin,T*end){
T*p = begin;
T ans = 0;
for(T*p = begin;p!=end;p++)
ans = ans + *p;//没有使用+=,是没有定义结构体的运算符+=,这个结构体也要定义+
return ans;
}

这里的运算符有一点变化初始化加上<>类型,函数加上<>T

template <typename T>
struct Point{
	T.x,y;
	Point(T x = 0,T y = 0):x(x),y(y){}
}

template <typename T>
Point<T> operator +(const Point<T>&A,const Point<T>&B){//定义运算符
return Point<T> (A.x+B.x,A.y+B.y);
}

template <typename T>
ostream& operator << (ostream &out,const Point<T>*p){//定义输出流
out<<"("<<p.x<<","<<p.y")";
return out;
}

int main(){
	Point<int> a,b(1,2);//由于构造函数从而这样定义结构体变量
	Point<double>c(1.1,2.2),d(3.3,4.4);
	a.x = 3;
	cout<<a+b<<" "<<c+d<<endl;
}
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值