1.结构化程序设计的不足 程序=算法+数据结构 数据结构和变量相对应,算法和函数相对应,算法是用来操作数据结构的. 结构化程序设计中,函数和其所操作的数据结构,没有直观的联系.随着程序规模的增加,程序逐渐难以理解,很难一下子看出来:某个数据结构到底有哪些函数可以对它进行操作?某个函数到底是用来操作哪些数据结构的?任何两个函数之间存在怎样的调用关系? 结构化程序设计没有"封装"和"隐藏"的概念. 要访问某个数据结构中的某个变量,就可以直接访问,那么当该变量的定义有改动…
一.重载类型强制转换运算符 在C++中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符.类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数.经过适当重载后,“(类型名)对象”这个对对象进行类型强制转换的表达式就等价于“对象.operator类型名()”,即变成对运算符函数的调用. 下面的程序对double类型类型强制转换运算符进行了重载. #include <iostream> using namespace std; class Com…
1.内联函数(inline关键字) eg.inline int Max(int a,int b) { if(a>b) return a; return b; } 当编译器处理调用内联函数的语句时,直接将整个函数体的代码插入调用语句处,但是会使最终可执行程序的体积增加.(这是以空间换时间) 2.函数的重载(使函数命名变得简单) (1)定义:一个或多个函数,名字相同,然而参数个数或类型不同 (2)编译器判断形式:根据函数调用语句中实参的个数和类型来判断 eg. int MAX(int a,int b…
一.重载赋值运算符“=” 赋值运算符“=”要求左右两个操作数的类型是匹配的,或至少是兼容的.有时候希望赋值运算符两边的类型可以不匹配,比如,把一个int类型变量赋值给一个Complex对象,或把一个 char * 类型的字符串赋值给一个字符串对象,此时就需要重载赋值运算符“=”.C++规定,赋值运算符“=”只能重载为成员函数. 程序示例分析: #include<iostream> using namespace std; class String { private: char* str; p…
一.C++程序到C程序的翻译 程序示例分析: C++: class CCar { public: int price; void SetPrice (int p); }; void CCar::SetPrice (int p) { price = p; } int main() { CCar car; car.SetPrice(); ; } C: struct CCar { int price; }; void SetPrice(struct CCar * this,int p) { this-…
一.成员对象和封闭类 (1)定义 一个类的成员变量如果是另一个类的对象,就称之为“成员对象”. 包含成员对象的类叫封闭类. (2)封闭类构造函数的初始化列表 在构造函数中添加初始化列表的写法: 类名::构造函数名(参数表):成员变量1(参数表),成员变量2(参数表),··· { ··· } “:”和“{”之间的部分就是初始化列表.初始化列表中的成员变量既可以是成员对象,也可以是基本类型的成员变量. class CTyre //轮胎类 { private: int radius; //半径 int…
1.构造函数.析构函数和变量的生存期 构造函数在对象生成时会被调用,析构函数在对象消亡时会被调用. 程序示例分析: (1) #include<iostream> using namespace std; class Demo { int id; public: Demo(int i) { //类型构造函数 id = i; cout << "id=" << id << " constructed" << en…
 1.对象的内存匹配 一般来说,在C++中,一个对象占用的内存空间大小等于其成员变量所占用的内存空间的大小之和.(对象只包含成员变量,不包含成员函数) 每个对象都有各自的存储空间.一个对象的某个成员变量被改变后,不会影响另一个对象. 2.类的成员变量和成员函数使用方法 ①对象名.成员名 ②指针->成员名 ③引用名.成员名 3.类成员的可访问范围 private:用来指定私有成员.只在该类的成员函数内部才能被访问. public:用来指定公有成员.在任何地方都可以被访问. protected:用来…
1.cout输出 cout<<待输出项<<待输出项2<<···; 2.cin输入 cin>>变量1>>变量2>>···; 3.C++程序通常包含的头两行 4.头文件 一些C语句中常用的头文件在C++中的名字变为去掉".h",并在开头增加字符c eg.#include 5.强制类型转换 C++中强制类型转换可以写成:类型名(待转换的表达式) 6.引用(从一而终) 类型名 & 引用名 = 同类型的某变量名 注意…
假设要编写一个小区养狗管理程序,该程序需要一个“主人”类,还需要一个“狗”类.狗是有主人的,主人也有狗.假定狗只有一个主人,但一个主人可以有最多10条狗.该如何处理“主人”类和“狗”类的关系呢?下面是一种直观的写法: #include<iostream> using namespace std; class CDog; class CMaster { CDog dogs[10]; int dog_num; }; class CDog { CMaster m; }; int main() { }…