C++ 学习笔记1

最近看了《C++ primer》一书,感觉看的挺仔细的,觉得理解的差不多了,今早上开始开算法导论,以前看算法导论的时候都是知道理论,没有动手实现,感觉收获不大。现在再看的时候觉得应该动手实现,加深理解的同时也可以锻炼C++编程。不动手不知道,C++的很多基本知识编程的时候还是不熟悉,还需要多锻炼。

今早就变了一个特别简单的插入排序算法,在算法中使用了模版。模版的使用相当来说还比较简单,但是在编写类的时候遇到了很多问题,主要是对概念不清楚,操作符重载是否需要作为成员函数、作为友元还是作为一般函数,这些都不是很熟悉。

经过不断的调试,非常简单的程序也花费了好长时间,实在是汗颜啊!尴尬对于今早的编码,总结如下:

(1)赋值、下标、调用和成员访问箭头必须定义为成员函数

(2)符合赋值操作符应该定义为成员函数,但不是必须的

(3)改变对象状态或者与给定类型紧密联系的操作符,如自增、自减、解引用等,通常定义为成员函数

(4)对称的操作符,如算术操作符、相等操作符、关系操作符合为操作符,最好定义为普通非成员函数,但是基本应该定义为友员函数。

(5)输入输出操作符必须定义为非成员函数,应为成员函数的第一个参数必须是类类型的对象,而输入输出操作符应该是ostream类型的应用,并且操作符的返回类型也应该是ostream引用。


简单定义一个类Type如下:

Type.h文件:

class Type
{
private:
	int number;
	string str;
public:
	Type(){}
	Type(int a,string str):number(a),str(str){}

	Type(const Type& t)
	{
		number = t.number;
		str = t.str;
	}

	Type& operator=(const Type& t)
	{
		number = t.number;
		str = t.str;
		return *this;
	}
	
	friend int operator<(const Type& t1,const Type& t2);
	friend int operator>(const Type& t1,const Type& t2);
	friend ostream& operator<<(ostream& os,const Type& t);
	
	~Type(){}
};



Type.cpp文件:
int operator<(const Type& t1,const Type& t2)
{
	if (t1.str < t2.str)
		return 1;
	else
		return 0;
}

int operator>(const Type& t1,const Type& t2)
{
	if (t1.str > t2.str)
		return 1;
	else
		return 0;
}

ostream& operator<<(ostream& os,const Type& t)
{
	os << t.number << " " << t.str << endl;
	return os;
}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值