C++学习

 
声明权限  
public可以被任何函数访问  
protected 只允许被本类和派生类的成员函数访问 
private只允许类本身声明的函数进行访问
     
类的成员函数
当成员函数的函数体代码较短时,可以在定义类时直接定义成员函数,即在类内定义成员函数。
当成员函数体代码较复杂时,可以在类外定义成员函数,但必须在类内对成员函数进行声明。
【例如】
//-----------------main.h的内容--------------//
class ClassName
{
public:
 void method(char *p);
 void show(void)
 {
  cout<<m_member;
 }
private:
 char m_member;
};
void ClassName::method (char *p)
{
 int temp;
 cin>>temp;
 if(temp==1)
 {
  m_member='a';
 }
 else
 {
  m_member=*p;
 }
}
//----------------main.c的内容------------------//
#include <iostream.h>
#include "main.h"
void main()
{
 ClassName test;
 char ch='b';
 cout<<"please input a number/n";
 test.method(&ch);
 test.show();
}
New
new的功能是动态分配内存,其语法格式为:
new 类型名(初值列表) ;
类型名包括基本类型,结构体类型,类类型等。
用new生成的变量是一个无名变量,它返回一个指针。
Delete
释放new所分配的内存空间的函数,其语法形式为:
delete 指针变量名;
若想释放new所建立的数组,要在指针变量前加[]
【例如】
//----------------main.c的内容--------------------//
#include <iostream.h>
#include "main.h"
void main()
{
 ClassName test;
 char *pch;
 int  *pi;
 pi = new int(22);
 cout<<*pi<<"/n";
 pch = new char('b');
 cout<<"please input a number/n";
 test.method(pch);
 test.show();
 delete pch;
 delete pi;
}//--------------main.h的内容不变---------------//
构造函数
功能:为新创建的对象分配内存空间,并对对象进行初始化
形式:和类的名字相同,并且该函数无函数类型的说明,不允许有返回值。调用时为隐式调用,若类中不给出类的构造函数,系统将自动给出,默认的构造函数没有参数,且函数体为空。
构造函数的函数体可以写在类体内也可以写在类体外,并且可以重载——定义多个参数不同或者类型不同的构造函数。
析构函数
功能:释放对象所占用的空间
形式:与类的名字相同,只是在类名字前面加上“~”符号,不允许定义函数的返回值类型,无返回值,没有任何形式的参数,且不可重载,一个类只能有一个。
【例如】
//----------------main.c的内容--------------------//
#include <iostream.h>
#include "main.h"
void main()
{
 ClassName test;
 char *pch;
 int  *pi;
 pi = new int(22);
 cout<<*pi<<"/n";
 pch = new char('b');
 cout<<"please input a number/n";
 test.method(pch);
 test.show();
 delete pch;
 delete pi;
}
//-----------------main.h的内容--------------//
class ClassName
{
public:
 ClassName();
 ~ClassName();
 void method(char *p);
 void show(void)
 {
  cout<<m_member<<endl;
 }
private:
 char m_member;
};
void ClassName::method (char *p)
{
 int temp;
 cin>>temp;
 if(temp==1)
 {
  m_member='a';
 }
 else
 {
  m_member=*p;
 }
}
ClassName::~ClassName ()
{
 cout<<"Class Destroy/n";
}
ClassName::ClassName()
{
 cout<<"Class Creat"<<endl;
}
派生类(子类)
形式:class SonClass : 继承访问权限FatherClass;
 
继承访问权限父类成员的访问权限子类成员的访问权限 
publicpublic public  
publicprotectedprotected 
publicprivate不可访问
protectedpublicprotected
protectedprotectedprotected   
protectedprivate不可访问
private publicprivate
private protected private
private private 不可访问 

运算符重载
 
1类运算符
2友元运算符
 
类运算符重载的形式:
类型(即返回值) 类名::operator 重载运算符(参数表)
类型(即返回值) operator 重载运算符(参数表)
其中1)为在类外定义运算符,2)为在类内定义的运算符
【例如】
//----------------main.c的内容--------------------//
#include <iostream.h>
#include "main.h"
void main()
{
 ClassName test;
 char *pch;
 int  *pi;
 pi = new int(22);
 cout<<*pi<<"/n";
 pch = new char('b');
 cout<<"please input a number/n";
 test.method(pch);
 test.show();
 NewClass a,b;
 a.ClassInit();
 b.ClassInit();
 if(a==b)
 {
  NewClass val;
  val=a+b;
  val.showtwo();
 }
 delete pch;
 delete pi;
}
//----------------main.h的内容--------------------//
class ClassName
{
public:
 void method(char *p);
 void show(void)
 {
  cout<<m_member<<endl;
 }
private:
 char m_member;
};
void ClassName::method (char *p)
{
 int temp;
 cin>>temp;
 if(temp==1)
 {
  m_member='a';
 }
 else
 {
  m_member=*p;
 }
}
class NewClass : public ClassName
{
public:
 void ClassInit(void)
 {
  m_a=2;
  m_b=3;
 }
 void showtwo(void)
 {
  cout<<"a = "<<m_a<<endl;
  cout<<"b = "<<m_b<<endl;
 }
 NewClass operator +(const NewClass &other);
 bool operator ==(const NewClass &other)
 {
  if(m_a==other.m_a && m_b==other.m_b)
  {
   return true;
  }
  else
  {
   return false;
  }
 }
private:
 int m_a;
 int m_b;
};
NewClass NewClass::operator +(const NewClass &other)
{
 NewClass temp;
 temp.m_a = m_a*other.m_a;
 temp.m_b = m_b*other.m_b;
 return temp;
}
虚函数
在基类中只声明虚函数,而不给出具体的定义,将它的具体定义放在各派生类中,这种虚函数称为纯虚函数。这样就可以通过基类指针调用所有派生类的虚函数。基类仅作为一个接口,具体功能在派生类中实现。声明了纯虚函数的类称为抽象类。
纯虚函数的声明形式如下:
virtual 函数类型(即返回值) 函数名(参数表)=0;
【例如】
//----------------main.c的内容--------------------//
#include <iostream.h>
#include "main.h"
void main()
{
 AbstractClass *p;
 InstanceClass c;
 p=&c;
 int temp;
 temp = p->function();
 cout<<temp<<endl;
}
//----------------main.h的内容--------------------//
class AbstractClass
{
public:
 virtual int function(void)=0;
};
class InstanceClass : public AbstractClass
{
public:
 int function(void)
 {
  return 38;
 }
};
Windows API 分类
 
服务文件
内核服务Kernel.dll 
图形设备接口Gdi32.dl
网络服务Mpr.dll、Wininet.dll、Winsock32.dll   
多媒体服务Winmm.dll 
客户/服务方式存取服务 Advapi32.dll 
版本服务Version.dll
公共对话框服务Comdlg32.dll 
打印管理服务Winspool.drv 
解压缩与压缩文件服务Lz32.dll 

VS6.0中有一个叫WIN32API.CSV的文件可以通过它浏览Windows各版本下API函数的原型说明
内核服务API
1.  文件管理内核服务
VC对文件进行操作的4种方式
         a) 利用C语言中的fopen(), fread()等基本函数
         b) C++中利用fstream中的函数进行操作
         c)  使用CFile类进行操作
         d) 使用文件API进行操作
    1)文件操作
        CopyFile(),MoveFileEx(),DeleteFile()
    2)驱动器操作
       GetLogicalDrives(),GetLogicalDriveStrings(),GetDriveType()
2.  进程操作内核服务
   1) 进程的创建
       CreateProcess()
3.  计算机系统信息内核服务
       GetComputerName(),GetSystemInfo(),GlobalMemoryStatus()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值