之前一直在看c++,却没有动手敲过代码,看到多重继承之后决定停一停,开始从头一步一步来,于是照着书上敲了下c++的代码,以复数为例来创建类complex,通过调用该类的成员函数来输出成员变量的值。
#include<iostream>
using namespace std;
class complex
{
private:
float real;
float imag;
public:
complex(float x=0,float y=0)
{
real=x;
imag=y;
}
~complex()
{
}
complex add(complex x)
{
complex z;
z.real =real+x.real ;
z.imag =imag+x.imag ;
return z;
}
void show()
{
cout<<"real is "<<real<<endl;
cout<<"imag is "<<imag<<endl;
}
};
int main()
{
complex x(1,2),y(3,4);
complex z1;
z1=x.add(y);
cout<<"z1 is"<<endl;
z1.show() ;
return 0;
}
class complex创建类conplex,该类成员变量real,imag定义为私有的,构造函数,析构函数,以及成员函数定义为公有的。
通过该例以及前期的c++学习,可以总结一些c++的知识点:
1.#include<>和#include"",使用<>时,系统将直接在系统库函数文件目录下直接寻找该文件,当使用"",系统将首先在用户当前的工作目录寻找该文件,若找不到,再按系统指定的文件查找方式在其他目录中寻找。
2.c++中的结构体定义完就可以直接使用该结构体名定义变量。而不用再加struct。
3.cout,cin分别代替了printf和scanf。
4.在变量前面加const,限定该变量在定义域范围内为常量,当用construction修饰一个函数的形式参数,则限定相应的实际参数在该函数内为常量,即该参数不允许在函数内被修改。
5.c++的函数可以带有缺省参数,调用语句给出函数的参数时,就按该参数调用该函数,当调用语句未给出函数的参数时,就按缺省参数调用该函数。所有非缺省参数应位于所有缺省参数的前边。
6.c++的函数可以进行函数重载,函数重载可以让多个函数拥有同一个名字,根据程序的不同参数选择不同的函数来进行调用,函数重载要求重载的函数至少在参数个数,或参数类型上与已定义的函数不用,如果参数类型和个数相同,仅仅是函数的返回值不同,将无法构成函数重载。且函数重载和缺省参数同时使用,会造成二义性。
7.using namespace std;表示所有标准库函数都在标准命名空间std中进行了定义,其中std表示标准命名空间的名字。该语句在于避免发生重命名的问题。使用::来选择作用域,若已知名称空间zhangsan,其中有变量a,可以使用zhangsan::a来引用a,而不必去管是否在主函数中已定义了a。using可以使某空间名字中所有名字在当前域中可见。
8.主函数中的complex x(1,1);来进行对象的初始化赋值,是通过系统自动调用构造函数来完成的。
9.private之后声明的成员变量和成员函数对外部程序都是不可见得,protected之后的成员变量和成员函数只有在其派生类中可见,public之后的成员变量和成员函数则是对外全部可见的,一般情况下,成员变量设为私有的(这么做正是c++封装性的体现,只提供对外部的接口而不必让用户知道内部是什么,若函数内部改变,但只要接口没变,外部函数就可以继续使用该类),外部函数和构造函数设为公有的,因为对象的定义都是在类之外,所以必须要在类外面运行构造函数来创建成员变量。
10.成员变量不能在被定义时初始化,这是因为不同对象的成员变量各不相同。
11.构造函数必须和类名完全相同,不能有返回类型。
12。成员函数可以访问类中任何变量,无论是private或者protected,但是构造函数和析构函数除外。
13.析构函数用于函数在申请动态内存,即new了新空间时,需要析构函数在delete之后完成一些收尾的工作,且析构函数不能有类型,访问权限一定是public。
14.构造函数和所有成员函数都可以重载,但是析构函数不可以。
15.子对象构造函数的的设计方法:一是显示调用相应的拷贝函数为子对象赋初值,二是显示调用相应的构造函数赋初值。
16.构造函数会在对象被创建时自动运行。
17.static成员变量是整个类都有的一个成员变量,一般为私有,static成员变量必须在应用程序的全局作用域内被初始化,一般在主函数和类之外对其进行初始化赋值。
到此为止,初步学习了c++的对象与类,将来也会慢慢深入,多多敲代码,还是会发现自己的许多不足,加油。