????1??????????????????????Ч??

????2?????????????????????????????this???????????static?????

????3?????????????????c++??????????Σ????????????????????????????????????????cpp????ж????????????????????cpp????в???????á????????£?

//   main.cpp
#include   <iostream>
extern   int   hello2();
static   int   hello()
{
        std::cout   < <   "hello??   world! "   < <   std::endl;
        return   0;
}
int   main()
{
        hello();
        hello2();
}
//   append.cpp
extern   int   hello();
int   hello2()
{
        hello();
}
//---------------------------------------------

????????????????

????append.obj   :   error   LNK2001:   unresolved   external   symbol   "int   __cdecl   hello(void) "   (?hello@@YAHXZ)
????Debug/Test.exe   :   fatal   error   LNK1120:   1   unresolved   externals

????????hello????static?????????????????

?????????????append.cpp?е???main.cpp?е???????????????

????????????????????????“????::?????????”

#include<iostream>
using namespace std;
class A
{
 public:
 static void fun(int x)
 {
 
  cout<<x<<endl;
 }
};
int main()
{
 A son;
 son.fun(5);
// A::fun(5);
 return 0;
}

???????????????????????????????棬sonδ??????????????????????????????????????????????????????????????????????????????????д???????о?????//?????????????????????????

??????????????????????????????????????????????????????????????Щ??

??????t????????????????棬??????????ж????????е??????????????????????????????洢??????????ж????á???????????????????????????????????????????μ???????????????????????Σ??????????ж????????????????o????????????????Ч???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????£?????????????????????Щ?????????????????????????????

????????????????????????????????????????????????

???????????????????????????


static   int   fun()
{
...;
return   1;
}

????????????????????е???fun???????????????fun?????static??????????link?????????????????fun????塣????????????????????C????????????????C????д?????????????C++???????????????????????static????????????????????????????????????????????δ??????????


namespace{
int   fun()
{
...;
return   1;
}

}

??????????????????δ???????????е?????????static???η??????????????????????????????????????????????????????????????á?????????д???????????????????????????????????????????д??

???????????????????????????????????????????????????????????????Σ??????????????????????????Щ?????????static???

??????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????????????????t???????????????????Щ??????????????????????????????????????????????????????

class   A
{
static   int   i;   //   ????????0
public:
A()   //   ??????
{
++i;
}
~A()   //   ????????  
{
--i;
}
static   int   CreateObjectNumber()   //   ???????????????
{
return   i;
}
};

????????????????????????????????????????????á?????????????

????1???????????public??protected   ??private????????????????????protected????private??????????????????????

????A::i??????

???????????????????????????

????2????????????????????????????????????????????????????????????????????static???????const??????????????????????

Class   A
{
//   Static   int   I   =   5;   //   error
Static   const   int   I   =   5;   //   ok
Int   m_list[I];
}

??????????I???????????Int   m_list[I];

????3????????????????????????????????????????????????????????????????????????????????????????????????????????????????

????4?????????????????????????????????????????????????????????????е?i??????????????????????????

int   fun()
{
static   int   i   =   3;
++i;
return   i;
}

???????????????????????fun??????????????i????????棬???????lazy   evaluation??????????е??????????????

????????????????????????????????????????????????????????????????????????????????????????СС?????????????????????????κμ??????????????????????????????????????????????????????????????????????????Щ??????????????????Щ???????????????????????????????????????????

????1??????????????????????????????????????friend?????????????????????????????????????????????????κε??????????private??public?????????private????

????2??????????????????????????????????????????????????????????????? "???? "?????????????г??????????? "???? "??????????

????3?????????????????????????????????????????????????????????????????????????????

????4??????????????????????г????????????????У????????????????????????У?????????????????????????????ó????????????????

????5????????????????????????????????????????????????????????????????????????е?????????????????п???????????????????????????????????

???????????????????????????????е????????дGet/Set????????????????????д???????г??????????????????????????y????????????????????????á??????????????????????????????????????Щ???????к????????????????簢agentx++??

class   AU
{
public:
AU(){
};
string   GetAU()
{
return   "Base--GetAU ";
}
virtual   string   GetAUU()
{
return   "Base--GetAUU ";
};
virtual   ~AU(){};
};

template   <class   T??class   TBase>
class   TEMU:public   TBase
{
public:
string   GetAA()
{
T*   pt   =   static_cast <T*> (this);
return   pt-> GetA();   //   ??????????static   string   GetA()????
}

string   GetBB()
{
T*   pt   =   static_cast <T*> (this);
return   pt-> GetB();   //   ??????????string   GetB()
}

public:
string   GetA()
{
return   "TEMU   -   GetA ";
}

string   GetB()
{
return   "TEMU   -   GetB ";
}
};

class   DeriveTEMU   :   public   TEMU <DeriveTEMU??AU>
{
public:
static   string   GetA()   //   ???????????????
{
return   "DeriveTEMU   -   GetA ";
}
string   GetB()
{
return   "DeriveTEMU   -   GetB ";
}
};
 
????????????

????DeriveTEMU   u;
????TEMU <DeriveTEMU??AU>   *p   =   &u;
????cout   < <   p-> GetAA()   < <   endl;
????cout   < <   p-> GetBB()   < <   endl;

??????????

????DeriveTEMU   -   GetA
????DeriveTEMU   –   GetB
??????????????????????????????????????????????????::????????????????????游??????????????????????????????????????????????????????????????й???е????й???????????????е??????????????????????????????????????????????ATL??WTL???й???????????????漰???????????????У??????????????