欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++基础及重要技术

程序员文章站 2022-07-02 18:34:47
1.类和对象 1.1类的相关实现 第一种方法是将类的成员函数定义在类体内,这里不再介绍 第二种方法是将类体内的成员函数的实现放在类体外,此时需要域运算符“::&r...
1.类和对象 1.1类的相关实现

第一种方法是将类的成员函数定义在类体内,这里不再介绍
第二种方法是将类体内的成员函数的实现放在类体外,此时需要域运算符“::”,和第一种效果一样。

class apple
{
    public:
//数据成员
    int index;
//成员函数
    int getindex();
};
//类成员函数实现部分
int apple::getindex()
{
    return index;
}

C++语言一般在头文件放入函数的声明,在cpp文件里面放入函数的实现,同样可以在头文件里面放入类的定义,将类的成员函数实现在实现文件内,存放类的头文件和实现文件最好和类的名称相同。例如:

//apple.h文件
#include
#include....
class apple
{
    public:
    int index;
    int getindex();
}
...
//apple.cpp文件
#include
...
int apple::getindex()
{
    return index;
}
...
1.2构造函数
#include
class apple
{
    public:
        apple();
        apple(int iindex,short isize);
        int index;
        short size;
    ...
}
//默认构造函数初始化
apple::apple()
{
    index=1;
    size=2;
}
//在带参数的构造函数中初始化
apple::apple(int iindex,short isize)
{
    index=iindex;
    size=iisize;
}
int apple::getindex()
{
    return index;
}
...
void main()
{
    apple a1;
    cout<1.3类成员

如果在类定义的时候没有加任何关键字,默认状态成员都在private区域。

1.3.1静态类成员

若将类成员定义为静态类成员,则允许使用类名直接访问,大概是因为叫这个名字的只有一个大家的值都一样吧,用类直接访问不用担心混淆,静态类成员是在类成员定义前使用static关键字标识。在定义静态数据成员时,通常需要在类体外对静态数据成员初始化。例如:

class apple
{
    public:
    static unsigned int price;  //定义一个静态数据成员
}
unsigned int apple::price=10;   //初始化静态数据成员
...

int main(...)
{
    apple a1;
    cout<

在定义类的数据成员时,可以为成员函数指定默认参数,其参数默认值可以是类的静态数据成员,但是普通数据成员则不能作为函数默认参数。 另外静态成员函数只能访问静态数据成员 在定义静态数据成员函数时,如果函数的实现代码处于类体之外,则在函数的实现部分不能在标static关键字。

class apple
{
    public:
    static unsigned int price;
    int abc;
    void output(int data =price)    //以静态数据作为默认参数
    {
    cout<

关于嵌套类和友元相关需要的时候再补充。

2.继承与派生2.1类的继承

继承有3种派生方式,public,protected,private,”:”表示基类和派生类之间的继承关系,例如:

class phone
{
    public:
    int size;
    char name[10];
};
class iphone:public phone
{
    public :
    char version[10];
    int  sizes;
}

注意:私有成员不能被继承,在派生时若子类中定义了一个与父类同名的成员函数,此时子类会隐藏父类的成员函数

2.2继承后的可访问性

公有型派生后基类该什么型还什么样,privated的还是不能访问
保护型派生后原来的public和protected成员在派生类中均为protected,只是在派生类定义的时候可以访问,用派生类定义的对象不能访问,在类体外也不能访问,也就是说,protected成员可以被基类所有派生类使用,就是不能更改。
私有型派生基类中的private还是不能访问。

2.3构造函数访问顺序

从父类派生一个子类并声明一个子类对象时,它将先调用父类的构造函数,然后调用当前类的构造函数来创建对象,在释放对象的时候,先调用的是当前类的析构函数,最后是父类的析构函数。
无论调用的是那种子类的构造函数,都会先调用父类默认的构造函数,若想用父类带参数的构造函数则需要显示调用。例如:

#include....
...
class father
{
    public:
    int ID;
    char name [10];
    father(char name[10])
    {
    strcpy(char name[]);
    }
    father()
    {
    strcpy(name,"HH");
    }
    ...
};
class son:public father
{
    public:
    char smallname[10];
    son(char name[]):father(name)
    {
    cout<<.....<

未完待续…