C++基础

原创 2006年06月13日 13:36:00

今天看了孙鑫的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();

}


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

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

 

 

 


相关文章推荐

C和C++与数据结构基础讲义

  • 2017年11月12日 20:09
  • 17.18MB
  • 下载

2013传智播客c++基础班

  • 2016年07月09日 17:29
  • 55B
  • 下载

C++基础——格式化输出

似乎很少有人强调C++的格式化输出的问题,那是因为因为c++的编译器默默地做着许多格式化的动作,以保证C++ Style格式化输出与C-style的格式化的一个根本不同,C++style的格式化输出是...

超适合自学c++基础视频part3

  • 2016年03月15日 00:42
  • 69MB
  • 下载

超适合自学c++基础视频part5

  • 2016年03月15日 00:59
  • 69MB
  • 下载

c/c++基础(十七) 编译与加载 动态库(.so)

c/c++ 编译so与动态加载so

C++基础知识课件学习

  • 2016年01月11日 19:33
  • 2.55MB
  • 下载

C++ Template之技巧性基础知识 和 typeid(x).name()用法

1.对于T是自定义类型的,如果存在子类型则需要在模版内部加上typename 示例代码: 1 2 3 4 5 templa...

有关C++详细的教程(编程基础)

  • 2014年12月01日 18:12
  • 1.55MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++基础
举报原因:
原因补充:

(最多只允许输入30个字)