1.培养规范、大气的编程习惯
C++的学习过程可以分为C++语言与C++标准库两个部分,不必太在乎版本。标准库一般在编译器集成环境中。
#include "complex.h" ----自己写的
#include
防卫声明:#ifndef_complex_
#define_complex_
#endif
2.课堂笔记
inline(内联函数),函数在classbody 内定义,便成为inline候选。若函数较为复杂,则无法inline。
构造函数没有返回值的原因:构造函数是为了创建对象,而这个对象就是类的东西,所以程序也不可能调用构造函数。
构造函数独有的语法:complex(double r=0,double i=0):re(r),im(i) { } //这里是吧r设到re中去,意义:一个变量的数值设定有两个阶段,1.初始化;2.赋值。 这条语句可以将两步分开,效率更高。
不带指针的类大多不需要析构函数。
操作符重载:操作符本质也是函数。
谁调用函数,谁就是this
传递者无需知道接受者是以reference形式接收。
连串使用的操作符重载类型不能说void。
type name() 返回local object。
3.参数传递与返回值
在参数传递与返回值中尽量用引用传递,pass by value VS. pass by reference
友元friend,可以从类中拿取数据,代价是破坏了类的封装。
相同class的各个objects互为友元,即class内的object可直接调用private。
什么时候不能返回引用:在返回的引用是函数内创建的局部变量,因为函数结束时该变量的生命结束,因此引用也消失。
4.第一周作业小结
1.class Date
{
public:
Date(int y = 0, int m = 0, int d = 0) : year(y), month(m), day(d){};
bool operator== (const Date& date)
{
return year == date.year&&month == date.month&& day == date.day;
}
bool operator > (const Date& date)
{
if (year != date.year) return year > date.year;
else if (month != date.month) return month > date.month;
else if (day != date.day) return day > date.month;
else return false;
}
bool operator < (const Date& date)
{
if (year != date.year) return year < date.year;
else if (month != date.month) return month < date.month;
else if (day != date.day) return day < date.month;
else return false;
}
void Print()
{
cout << year << '-' << month << '-' << day << endl;
}
private :
int year;
int month;
int day;
friend void CreatPoints(Date*date, const int&n);
}; //此处的;十分关键,若没有会出现许多不明意义的错误,比如什么.cpp文件里using前缺少;之类的问题。