快捷搜索:

C++语法总结(2)

1 const 与volatile 的用法

1 const

#include

#include

//行参数指向const 类型变量的指针

void display_c(cons int * pi)

{

cout

int i;

const type_info &t0=typeid(i);

t0.name();

10 函数

1 模板函数

template T min(R &x,Tv&y)

{

return x

#include

#include

class Book

{

private:

char * pBookName;

public:

int PageNum;

public:

Book(char * pBN=NULL);

~ B o o k ( v o i d ) ;

void SetBookName(char * pBN);

int GetBookName(char * pBN,unsigned int MaxSize);

} ;

Book:Book(char *PBN)

{

coutstrlen(pBookName))

{

strcpy(pBN,pBookName);

retrun strlen(strlen(pBookName));

}

}

// 应用

Book b1;

b1.SetBookName("test");

Book b2(test1);

2 工具的引用参数通报

void Add(Book b)

void AddRef(Book & b);

3 静态成员变量 是一个公共变量

在初始化 的时刻使用感化运算符:: 对私有类型的静态成员变量可以向公有类型的静态成变量一样赋值

但不能直接引用

3 const 类型成员函数与mutable

class CDate

{

public:

int year;

mutable int month;

CDate(int y=2000,int m=1)

{

year=y;

month=m;

};

int BetMonth() const ;//read only

void SetMonth(int m);// write only

}

void CDate::SetMonth(int m)

{

month=m;

}

void main()

{

CDate d1;

}

在const 类型的成员函数定义中,弗成不停接或简介的改动通俗类型的成员变量

假如象改动const 类型工具的成员函数,可以应用关键字mutable 对该成员变量进行改动

5 工具的初始化与初始化行

将参数类表中的数值付与成员变量时,不仅可以在构造函数的函数体中进行,以阿宽衣在初始化行中进行

在初始化处惊醒初始化的环境有:

1 分层类的构在函数可以调用它的任何一个子工具的构造函数

2 对常量const 类型的成员变量的初始化必须在初始化行上

3 对付引用类型的成员变量的初始化必须在初始化行上

class CPoint

{

public:

int x,y;

CPoint(int ax=0,int ay=0)

{

x=ax;

y=ay;

}

};

class CRect

{

private:

CPoint low_right;

CPoint up_left;

public:

int & CenterX;

const int CenterY;

CRect(int x1,int y1,int x2,int y2,int &x3,int y3)

:up_left(x1,y1),low_right(x2,y2),CenterX(x3),CenterY(y3)

{

}

};

void main()

{

int cx=5;

int cy=6;

CRect r1(1,2,3,4,cx,cy);

}

6 拷贝构造函数

拷贝构造函数与通俗构造函数的区别在与棋参数类表,参数列表中有一个工具,该工具的数据类型是

本类的一个引用,而且一样平常环境下,该工具还应该是一个const 类型的工具。

假如在类的定义是不是显示的定义一个拷贝函数,则编译器会自动的定义一个拷贝构造函数

class CPoint

{

public:

int x,y;

CPoint(int m_x=0,ubt m_y=0);// default constructor

cPoint(const CPoint &c);//copy consrucotr

};

CPoint::CPoint(int m_x,int m_y)

{

}

CPoint::CPoint(const CPoint &c)

{

x=c.y;

y=c.x;

}

void main()

{

CPoint c1(1,2);//invoke default constructor

CPoint c2-c1;// invoke copy constructor

}

7 template class

templateclass Array // template class

{

private:

T arr[Size];

int CurSize;

public:

Array(T * date,int n)

{

CurSize=narray_i1(i1,i0);

}

1 友员类和友员函数

#include

#include

#include

class SoftWareEngineer; //先对SoftwareEngineer 类进行显示阐明一下

class Computer // 定义Computer 类

{

private:

int Price;

public:

Computer(int p){Price=p};

friend class SoftwareEngineer; //将友员类载这里声明

frined void Judge(Computer &c,SoftwareEngineer& s) //友员函数

};

class SoftwareEngineer

{

int Salary;

char Name[20];

public:

SoftwareEngineer(int s,char *n //构造函数)

{

Salary=s;

strcpy(Name,n);

}

int GetComputerPrice(Computer &c){return c.Price} //造访Computer 的思友变量

friend void Judge(Computer &c,SoftwareEngineer & s) //友员函数

};

//判断一个软件工程师是否可以用一个月的薪水买的器一台电脑

void Judge(Computer &c,SoftwareEngineer &s) //桥友员函数

{

if(c.Price>s.Salary)

cout

#include

#include

class TValue{

private:

int value;

public:

TValue(int i){value=i}

//成员函数重载运算符

TValue operator!();

TValue operator+(TValue & rv);

// 友员函数重载运算符

friend ostream & operator>(istream &is,Triangular &rhs)

{

char ch1,ch2;

int bp,len;

//输入 ch1='(',bp=3,ch3=',' len=6

is>>ch1>>bp>>ch2>>len;

rhs.beg_pos(bp);

rhs.length(len);

rhs.next_reset();

return is;

}

Triangular tris;

cin>>tri2

4 虚基类

载承袭关系中,同一基类被承袭多次,不仅会引器歧异,而起可能挥霍空间

class A

{

public:

int value;

};

class B:public virtual A(); //虚基类 编译器只孕育发生一个基类版本。假如不定义为virtual 编译器不知到调用那个value 了,当然

class C:public virtual A();//也可以return B::value;

class D:public b.public c

{

public

int GetValue(){return value;}

};

void main()

{

D dd;

dd.GetValue();

}

5 多态形,和虚函数

class TFirst

{

public virtual void Display();

};

void TFirst::Display()

{

coutDisplay();

}

void main()

{

TFirst * pFirst=new TFirst;

TSecond * pSecond=new TSecond;

pFirst->Display();

pSecond->Display();

Display(pFirst);

Display(pSecond);

delet pfirst ;

delet pSecond;

getch();

}

c++ builder 中的聚拢的

1 聚拢的观点基础

Set

Set s1

tydefef Set(char,1,255) UPPERCASet;

UPPERCASESet s1;

s1

#include

#include

using namespace std;

typedef Set UpperSet;

typedef Set LoverSet;

typeder Set HalfLowerSet;

void set_example()

{

LowerSet ae,ae2,ac,de;

UpperSet AE,AE2,AC,DE;

HalfLowerSet aj;

}

非常处置惩罚

1 c++ 的非常处置惩罚

#include

#include

class Crange

{

public:

int index;

CRange(int i){index=i;}

}

class CString

{

char a[100];

int len;

public:

CString(char * s)

{

Len=strlen(s);

strcpy(a,s);

}

char & operator[](int i)

{

if(i>0 && i

#include

void MultiException()

{

int i;

double d;

int no;

cout0 and >no;

tyr

{

switch(no)

{

case 1;

throw 123;

break;

case 2:

throw i;

break;

case 3:

throw d;

break;

case 4:

throw "Error";

break;

default:

cout<<"error";

}

}

catch(int ie)

{

cout<<"int"<

}

catch(double de)

{

cout<<"double"<

}

catch(char* se)

{

cout<<"char"<

}

}

3 bcb中的非常类

1)却省vcl 非常处置惩罚 无try catch 自动处置惩罚

int i=4,j=0;k;

k=i/k;

//下一句永世不会履行

ShowMessage(k);

2) 激发vcl 非常类

try{

}

catch(Exception &e)

{

ShowMessage(e.,Message);

}

不能激发如int double 等简单类型的非常

3) c++ 非常处置惩罚

try

{

throw 2222;

}

catch(int ErrorCode)

{

ShowMessage(ErrorCode);

}

}

4 单一捕捉非常

try{

k=10/0;

}catch(EDivByZero & E)

{

MessageDlg()

}

5 捕捉所有非常

try

{

}catch(...) or(EExternalException &E)

您可能还会对下面的文章感兴趣: