面向对象的程序设计方法 抽象:将某类客观事物共同特点(属性)归纳出来,形成一个数据结构(可以用多个变量描述事物的属性):将这类事物所能进行的行为也归纳出来,形成一个个函数,这些函数可以用来操作数据结构. 封装:通过某种语法形式,将数据结构和操作该数据结构的函数“捆绑”在一起,形成一个“ 类”,从而使得数据结构和操作该数据结构的算法呈现出显而易见的紧密关系. 从客观事物抽象出类 写一个程序,输入矩形的长和宽,输出面积和周长. 比如对于“矩形”这种东西,要用一个类来表示,该如何做“抽象”呢?矩形的属…
形式 返回值类型 operator 运算符(形参表) { …… } 运算符重载 (1)运算符重载的实质是函数重载(2)可以重载为普通函数,也可以重载为成员函数 class Complex { public: double real,imag; Complex( double r = 0.0, double i= 0.0 ):real(r),imag(i) { } Complex operator-(const Complex & c); }; Complex operator+( const C…
简单继承的例子: #include <iostream> #include <string> using namespace std; class CStudent { private: string name; string id; //学号 char gender; //性别,'F'代表女, 'M'代表男 int age; public: void PrintInfo(); void SetInfo( const string & name_,const string…
先上一段代码和关系图 function Person(){} Person.prototype.name = "Nic" Person.prototype.age = 22 Person.prototype.job= "Software Engineer" Person.prototype.sayName = function(){ alert(this.name) } var person1 = new Person(); var person2 = new Pe…
假设要编写一个小区养狗管理程序,该程序需要一个“主人”类,还需要一个“狗”类.狗是有主人的,主人也有狗.假定狗只有一个主人,但一个主人可以有最多10条狗.该如何处理“主人”类和“狗”类的关系呢?下面是一种直观的写法: #include<iostream> using namespace std; class CDog; class CMaster { CDog dogs[10]; int dog_num; }; class CDog { CMaster m; }; int main() { }…
在c++中,类和类之间有两种基本关系:复合关系和继承关系. 复合关系也称为“has a”关系或“有”的关系,表现为封闭类,即一个类以另一个类的对象作为成员变量. 继承关系也称为“is a”关系或“是”关系,即派生类对象也是一个基类对象. 在设计两个有关系的类时要注意,并非两个类有共同点,就可以让它们成为继承关系.让类B继承类A,必须满足“类B所代表的事物也是类A所代表的事物”这个命题从逻辑上是成立的.例如:写一个平面上的点类point: class CPoint{ double x,y; };…
#include<iostream> using namespace std; class A; class B{ public: void f(A* pt){}; } class A{ public: void f(B *pt){} } 第3行声明了A类,A类的定义在后面,之所以要提前声明,是因为B类的定义中用到了A类型(第6行),而此时A类还没有定义,编译会报错.不要第三行,而把A类的定义写在B类前面,是解决不了这个问题的,因为A类中也用到了B类(第10行),把A类的定义写在前面会导致第1…
  封闭类:  一个类的成员变量如果是另一个类的对象,就称之为“成员对象”.包含成员对象的类叫封闭类. #include<iostream> using namespace std; class A{ int n; public: A(int n):n(n){} }; class B{ A t; int g; public: B(int n,int g):t(n),g(g){} }; B是一个封闭类,生成封闭类对象的语句一定要让编译器能够弄明白其成员对象的是如何初始化的,否则就会编译错误. 封…
定义: string类是STL中basic_string模板实例化得到的模板类.其定义如下: typedef basic_string<char>string; 构造函数: string类有多个构造函数,但没有接收一个整型参数或一个字符型参数的构造函数 string s1(); //s1="" string s2("hello"); //s2="hello" string s3(4,'k'); //s3="kkkk"…
类的成员函数之间可以互相调用.在成员函数(静态成员函数.构造函数和析构函数除外)中调用其他虚成员函数的语句是多态的.例如: #include<iostream> using namespace std; class CBase { public: void func1() { func2(); } virtual void func2(){cout<<"CBase::func2()"<<endl;} }; class CDerived:public…