C++面向对象高级编程(上)笔记

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前缺少;之类的问题。



你可能感兴趣的:(C++面向对象高级编程(上)笔记)