关闭

C++基础

687人阅读 评论(0) 收藏 举报

今天看了孙鑫的C++第二课,了解了C++的一些基本知识

1. struct 结构关键字

  在 C++ 中的结构类型和 C 一样,是用 struct 定义的

  struct  结构名
  {
     int i;
     int j;
     void fun()
     {
        cout<<"这里结构中的一个函数"<<endl;
     }
  };          -> 这里


  首先,结构是 struct 开始 以 " ;" 号结尾 ,  与 c 不同的是 C++ 中的结构类型

可以定义函数 , 如上所示   void fun() 这个函数。
 
  其次,结构中默认的访问类型为 public,每个一结构中有一个隐藏的 public
 
struct  结构名
  {
   public:                         -> 这里显示指示
     int i;
     int j;
     void fun()
     {
        cout<<"这里结构中的一个函数"<<endl;
     }
  };          -> 这里


同样,我们也可以以 private 来指示访问属性

struct  结构名
  {
  private:
     int i;
     int j;
     void fun()
     {
        cout<<"这里结构中的一个函数"<<endl;
     }
  };          -> 这里


这样,当我再声明一个结构类型变量时,将不能访问 i,j 这两个值 ,因为他们是私有的


由此想到 delphi 中结构(记录类型)的定义

在 delphi 中,这种定义方式叫记录类型

type
  record  结构/记录名
    i:integer;
    s:string;
  end;

下面是 delphi 联机帮助中的例子

type
  TPoint = record
    X, Y: Single;
  end;                  -> 定义了一个结构

  TVector = array[0..1] of TPoint;                   -> 定义了一个数组
  TMonth = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);       -> 集合类型
  TDate = record
    D: 1..31;
    M: TMonth;
    Y: 1900..1999;
  end;
const
  Origin: TPoint = (X: 0.0; Y: 0.0);                             -> 常量
  Line: TVector = ((X: -3.1; Y: 1.5), (X: 5.8; Y: 3.0));
  SomeDay: TDate = (D: 2; M: Dec; Y: 1960);

 


2 . 类 Class 的定义


 类的定义和 struct 的定义很相似

 class  类名
  {
     int i;
     int j;
     void fun()
     {
        cout<<"这里结构中的一个函数"<<endl;
     }
  };          -> 这里


类以 class 开始 以 " ;" 结束

在 类中,默认的访问为 private 

在类中有三种访问权限   public ,private ,protected

public    是公有的,没有限制
private          是私有的,只有本类才可以访问
protected        保护的,子类可以访问


这三种访问限制符和 delphi 中的一样

说到类,就会想到 构造方法和析构方法

C++中的构造方法和析构方法的定义

   构造方法是  和类名一样,但不可以有返回值

   析构方法是  ~加上类名,也不可以有返回值,还不可以带参数
 
   C++ 中一定要有构造方法,要是不写则编译器会给你指定一个默认的无参数的构造方法
  
例:

class Animal
{
public:
 Animal(int height,int weight)
 {
  cout<<"animal construct"<<endl;
 }
 ~Animal()
 {
  cout<<"animal destructor"<<endl;
 }
};

上面的例子的构造方法带了参数

要想继承 Animal 这个类,则定义方法为

如:
 
  class Fish: public Animal
  {
  };

注意一下  上面的 public  还可以替换为 private ,protected

这里的意思是子类对父类里变量的访问权限

public  没有变化,父类中的变量或函数的访问权限是什么则还是什么

private 父类中的所有的都为 private

protected  父类中 public 变为 protected ,而 protected 变为 private

对于 父类的 private 则还是 private


如果子类的构造函数没有参数,则父类有参数,则子类要显示调用父类的构造函数

#include <iostream.h>
class Animal
{
public:
 Animal(int height,int weight)
 {
  cout<<"animal construct"<<endl;
 }
 ~Animal()
 {
  cout<<"animal destructor"<<endl;
 }
 void eat()
 {
  cout<<"animal eat"<<endl;

 }
 void sleep()
 {
  cout<<"animal sleep"<<endl;

 }
protected:
 void breathe()
 {
  cout<<"animal breathe"<<endl;
 }
};

class fish : protected Animal
{
public:
 fish():Animal(10,10), a(20)                         -> 这里要显示调用
 {
  cout<<"fish construct"<<endl;
  cout<<a;
 }
 ~fish()
 {
  cout<<"fish destruct"<<endl;
 }
private:
 const int a;              -> 可以动态的指定一个常量
};

void main()
{
  //Animal a;
 // a.eat();
  fish f;
  f.breathe();

}


子类和父类的构造函数以及析构函数的执行顺序是

先父类的构造,而后是子类的构造,再是子类的析构,最后是父类的析构

 

 

 


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:251255次
    • 积分:3811
    • 等级:
    • 排名:第8712名
    • 原创:109篇
    • 转载:70篇
    • 译文:0篇
    • 评论:18条
    最新评论
    链接
    上位机