?????????????????????????????????
???????????? ???????[ 2012/8/13 10:40:11 ] ????????
????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???й???????????????漰???????????????У??????????????
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11