2. 类和对象初探
结构化程序设计:
复杂的大问题,层层分解/模块化,若干子问题;
自顶向下,逐步求精;(程序=数据结构+算法,两者没有直观的联系)
理解难,修改难,差错难,重用难;
面向对象的程序设计方法:
面向对象的程序= 类+类+...+类;
设计程序的过程:设计类的过程;
一类事物 抽象,(共同属性,数据结构;行为,函数) 封装,类
ALGOL, CPL, BCPL, Simula 67, B, SmallTalk, C, C++, Java, C#
常用编译器:gcc, Visual C++ 10.0, Dev C++, Eclipse, Borland C++ Builder
定义内联成员函数的方法:
类定义中,在成员函数的声明前面加上关键字inline;
将整个函数的实现放在类定义内部。
一个类的两个成员函数名字相同,参数表相同,但是返回值不同,则这不算重载。
若定义了构造函数,则编译器不生成默认的无参数的构造函数;若这个构造函数有参数,而构造该类对象是未提供参数,则会出错。
例:
class Test
{
public:
Test(){} // (1)
Test(int n){} // (2)
Test(int n, int m){} // (3)
};
int main()
{
Test array1[2]; // 调用(1)号构造函数
Test array2[2] = {4, 5}; // 分别调用(2)号构造函数,其参数分别为4、5
Test array3[3] = {1, Test(1,2)}; // 分别调用(2)(3)(1)号构造函数
Test* pArray[4] = {new Test(4), NULL, new Test(1,2)}; // 只生成了2个对象,第2,4个指针未初始化
}
结构化程序设计:
复杂的大问题,层层分解/模块化,若干子问题;
自顶向下,逐步求精;(程序=数据结构+算法,两者没有直观的联系)
理解难,修改难,差错难,重用难;
面向对象的程序设计方法:
面向对象的程序= 类+类+...+类;
设计程序的过程:设计类的过程;
一类事物 抽象,(共同属性,数据结构;行为,函数) 封装,类
ALGOL, CPL, BCPL, Simula 67, B, SmallTalk, C, C++, Java, C#
常用编译器:gcc, Visual C++ 10.0, Dev C++, Eclipse, Borland C++ Builder
定义内联成员函数的方法:
类定义中,在成员函数的声明前面加上关键字inline;
将整个函数的实现放在类定义内部。
一个类的两个成员函数名字相同,参数表相同,但是返回值不同,则这不算重载。
若定义了构造函数,则编译器不生成默认的无参数的构造函数;若这个构造函数有参数,而构造该类对象是未提供参数,则会出错。
例:
class Test
{
public:
Test(){} // (1)
Test(int n){} // (2)
Test(int n, int m){} // (3)
};
int main()
{
Test array1[2]; // 调用(1)号构造函数
Test array2[2] = {4, 5}; // 分别调用(2)号构造函数,其参数分别为4、5
Test array3[3] = {1, Test(1,2)}; // 分别调用(2)(3)(1)号构造函数
Test* pArray[4] = {new Test(4), NULL, new Test(1,2)}; // 只生成了2个对象,第2,4个指针未初始化
}