设为首页 加入收藏

TOP

C++基础及重要技术
2017-12-18 12:36:58 】 浏览:238
Tags:基础 重要 技术

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<<.....<
         
          

未完待续…

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C和指针:IO详情 下一篇C和指针详情

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目