using namespace std (standard)//命名空间
在C++中双冒号(::)被成为域操作符。我们可以非正式地把域看作是一个可视窗口 全
局域的对象在它被定义的整个文件里 一直到文件末尾 都是可见的。
域操作符一般用于指定某个函数是属于哪个类的。例:Animal::breathe(); 说明breathe()方法是Animal类里的
引用 reference 即 IntArray &rhs 引用是一种没有
指针语法的指针 因此 我们写成 rhs._size 而不是 rhs->_size 与指针一样 引用提供
对对象的间接访问 。
1, c++支持用指针类型来存放对象的内存地址值。指针的主要用处是管理和操纵动态分配的内存。
取地址操作符(&)
例: int ival;
int *ping;//一个指向int类型的指针
ping = &ival;//把ival内存地址值赋给ping
2, C++中提供了一套输入输出流类的对象,他们是cin、cout和cerr,对应c语言中的三个文件指针stdin、stdout、stderr,分别指向终端输入、终端输出和标准出错输出(也称终端输出)。
cin和cout可以自动判别输入输出数据类型而自动调整输入输出格式。
在输出中我们还使用endl(end of line),表示换行,相当于C语言的‘\n’,表示输出一个换行
3, 在C++中,结构体是可以包含函数的。
例:struct Point
{
int x;
int y;
void output()
{
cout<<x<<endl<<y<<endl;
}
};
用struct定义的类和普通类的区别: 通过struct定义的类里的所有成员都是public类型的;而普通类在缺省的情况下的成员变量和成员函数都是private类型的。
4, 析构函数: 例
当对象的生命周期结束的时候,系统会自动调用析构函数,回收其所占有的内存空间。
析构函数就是“反向”的构造函数,析构函数不允许有返回值,更重要的是析构函数不允许带有参数,并且一个类中只能有一个析构函数。
5, 以下两种方式不能构成函数的重载:
第一种情况:(1)void output();
(2)int output();
第二种情况:(1)void output(int a,int b=5);
(2)void output(int a);
重载构成的条件:函数的参数类型、参数个数不同,才能构成函数的重载。
6, this指针是一个隐含的指针,它是指向对象本身,代表了对象的地址。
7, 每个类后面都必须加一个";"分号。
8, 在C++中,用“:”表示继承。
例:class Fish : public Animal 在这里如果父类是被public修饰,见图------
9, 在一个类中如果声明把一个成员函数声明为protected,则在其类外部是不可以访问的,
但通过类的继承关系是可以的。
10,在子类中会默认自动调用父类的构造函数(无参)。即先调用父类的构造函数、再调用子类的构造函数; 而在子类的析构函数中,则正好相反,即先执行子类的析构函数、再执行父类的析构函数。
11,Fish():Animal(400,300) 这个例子是通过子类的无参的构造函数,来给父类的有参的构造函数赋值。这里的父类只有有参的构造函数,没有无参的构造函数。
12, 通过无参的构造方法为常量赋值的一种方式。
例:class Fish : public Animal //继承父类
{
public: //这里的修饰符的作用是截止下一个修饰符出现为止,之前的成员变量或成员函数均为该修饰符类型
Fish():Animal(400,300),a(1) //为父类有参构造方法、常量a赋值,
{
cout<<"fish construct"<<endl;
}
private:
const int a; /常量a
}
13. 函数的覆盖时发生在两个类之间(父类与子类)。而函数的重载是发生在一个类之间。