达内2012.12.12

day01AM_C++基础_C++风格字符串_名称空间_引用
1.文件 fopen ,fseek, fclose,
       fscanf/fprintf, fgets/pfuts ,fgetc/fputc(函数), getc/putc(可能是宏),
      angetc,stdin,stdout,stderr,
      fread/fwrite,
      "b":二进制文件打开
      feof
      fseek/ftell,
      man -s2 stat  //unix,读取文件大小
      stat --help
      fflush
     

C++开始
1.封装:我的数据是安全的,别人不让访问,仅仅允许自己的函数访问,
2.继承
3.多态
4.模板,通用类型
5.异常处理
6.编译 g++/c++
7.文件后缀  .cpp,  .c,  .cc, .cxx, .h,  .hpp

8.g++ -c xxx.cpp -> xxx.o
  g++ xxx.o  -> a.out   ;  g++ xxx.o -o newname

9.g++ xxx.cpp -> a.out   ;  g++ xxx.cpp -o newname

10.namespace std //标准库的东西都放到名字空间 std
   using namespace std;//使用 std的名字空间

11.C89版本时,需要先把变量定义完,在写执行的语句

12.endl //end line  == '\n'

13.kuai  shuijoao 

14.using std::cout;//A::B ,A范围内的B
   using std::endl;
   using std::string;
   using std::cout;

15.cpp xxx.cpp  //预处理后的结果

16.定义名字空间
   namespace cdq{string name="abc";}
   namespace furong{char name[20]="cdeg";}
   using namespace furong;
   int main()
   {
     cout<<name<<endl; //cdeg
    }

17. ::name  //全局的

18.string s1;   // C++风格
   s1.size();
   s1.find();
   s1[i];

   char s2[100]; //C风格
   strcpy();
   strcmp();
   strlen();
   strchr();
   strstr();

   C -> C++  //字符串自动转
   C++ ->  C   //s1.c_str() -> s2  //返回const char*

19. enum Color{BLACK,RED};
   
20.C++调用函数时,不做类型提升, C会做类型提升。 ...按照C的规则提升


day01PM_常量_指针_new_delete_函数


1. 引用 reference

2. const double &dRef = 124.4; //对常量引用,常引用

3. static_cast 数值类型之间的转换
   const_cast  用于临时去掉 cast, volatile
   reinterpret_cast  任意两中指针类型之间转换,指针 于数值类型转换
   dynamic_cast

4.成员指针,成员地址
 //结构体变量 *
  struct date
  {
    int  day;
    int month;
 void print();
   }
   ShowMenber(date a[], int nNum, int date::*mp)
   {
       for(int i=0; i<nNum; i++)
       {
            cout<<(a+i)->*mp<<endl;
        } 
   }
  
   int main()
  {
      union{
       int n;
       int date::*mp; //成员指针
       }
       mp = &date::day;
       cout<<"n="<< n <<endl; // 读取的date::day的变量值
       date d={1,12};
       cout<<d.*mp<<endl;//
       mp = &date::moth;
       d.*mp  //.. 

       date a[2]={{1,2},{2,3}};
       ShowMember(a, 2, &date::month);
   
    void (date::*pf)()=&date::print;
    (d.*pf)();
    (a->*pf)();
   
   }
  
day02AM_引用_函数重载_形参默认值
  
1.引用,函数指针
   void JiaoHuan(int &a, int &b)
   {}
   int main()
   {
  void(*p)(int&, int&)=&JiaoHuan;
   }
2.C++ 输出16进制,引用
  void(const int& nValue)
  {
  cout<<hex<<showbase<<nValue<<endl;
  }
 
3.引用作为返回值
 int& Max(int &a, int &b)
 {
 return a>b?a:b;
 }
 int& Count()
 {
 static int cnt =0;
 ++cnt;
 return cnt;
 }
 int main()
 {
 Count()=1000;
 cout<<Count()<<endl;
 cout<<Count()<<endl;
 cout<<Count()<<endl;
 }
 
 4.inline  内联函数
  inline int Fun1(int nValue)
  {
 return nValue*nValue;
  }
  int main()
  {
 cout<<Fun1(10)<<endl;
  }
 
  5.liux下 C++头文件
   ls /usr/include/c++/4.1.1

    6.字符串类 string
    replace, insert

    7.setw(), setfill('0')

    8.定义类对象是加(),编译器会认为是函数声明。
    class Persion;
    Persion e():  // 函数声明

    9.每个成员函数里面都有个隐藏指针this
    this //   当前对象的指针
    编译器把对象
    Persion a
    (*this).name = name;
    this->name = name;

    10.运算符重载
 ......
public:
 friend ostream& operator<<(ostream& out,  Array& arValue)
{
 out<<"字符串为"<<arValue.GetValue()<<"\n Len:"<<arValue.GetLen()<<endl;
 return out
}
friend istream=""& operator>>(istream& in, Array& arValue)
{
 in>>arValue.nT1>>arValue.nT2;
 return in;
}
int main()
{
 cin>>aObj;
 cout<<aObj<<endl;
}

11.构造函数,拷贝构造函数,都是在初始化的时候调用,赋值不调用。
12.

day05PM_多重继承_虚继承_多态_typeinfo

1.定义对象,首先调用父类的构造函数,在执行自己构造函数。多个父类,按照继承顺序
执行构造函数。
 每个析构函数,总会先调用自身,在析构父类。
 
2.按照继承顺序调用,不会按照初始化列表顺序调用。

3.virtual继承:来之基类的对象保留一份,用最子类,初始化最基类。


4.多重继承,如果重复用::

5.virtual :虚函数,按照对象类型来调用方法,而不是按照指针类型来调用方法。

6.多态,通过指针(引用)调用虚函数的时候。才会用到多态。

8.父类指针 可以指向父类,及子类对象。
  子类指针 只能指向子类对象。
  dynamic_cast, 检查一个对象是否是子类对象。
  dynamic_cast<子类*>(父类对象地址),是的话返回正常地址,不是返回NULL
  如 cout<<dynamic_cast<Teacher*>(pPersion)<<endl;
   
9.typeinfo:运行时类型识别。一个结构体

10. explicit: 禁止自动类型转换

11.typeid(A).name(), typeid(A)返回一个typeinfo的对象
  
12.写一个数据库类Database,提供connect,query 两个虚函数
   程序类Program,提供一个公开的成员函数,void visit(Database* p){p->connect(); p->query();}
   再写三个数据库子类,Oracle,Access,SQLServer. 覆盖connect,query 两个虚函数
   在main函数用一个Program对象访问这三种数据库。
  
13.写一个艺术品类,提供一个print()显示艺术品的信息。写2个子类Painting,Music
   其中Painting信息有作者,年代,尺寸,Music 再分2个子类,流行音乐,和摇滚音乐。前者的信息包含作者,年代,时间长短,演唱者,
   后者的信息包括作者,年代,时间长短,和演奏人数,写一个全局函数
   void show(Arts &a)
   {
   a.print():
   }
   在main函数用每种艺术品子类创建一个对象,调用show
   函数分别显示他们的信息。
  
 14.基类,USB,子类 USBFan,USBprint, 接口类Computer ,方法Use(USB *usb),
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值