C++ 学习笔记1

来源:互联网 发布:淘宝押金在哪里交 编辑:程序博客网 时间:2024/06/07 10:14

最近看了《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;elsereturn 0;}int operator>(const Type& t1,const Type& t2){if (t1.str > t2.str)return 1;elsereturn 0;}ostream& operator<<(ostream& os,const Type& t){os << t.number << " " << t.str << endl;return os;}


原创粉丝点击