2009年4月30日星期四

Led Zeppelin - Wikipedia, the free encyclopedia

Led Zeppelin - Wikipedia, the free encyclopedia

永远的led zeppelin

在等车的无聊中跑去看盗版碟片,居然让我淘到了ledzeppelin的一张DVD
是一张纽约现场版的,先在剩下的几个人都差不多是快60的老头了,当年是多么锋芒毕露阿

很有意思的DVD片断,
ledzeppelin.的经理人如黑社会老大,总要用冲锋枪扫几个看不顺眼的

Jimmy Page 很闲适,在乡间的河边看与童男童女戏水

Robert Plant 很喜欢效果器弄出来的电声

John Bonham 乃超级玩家,哈雷,自制的赛车,DIY木匠,农夫,鼓手。精力充沛,让我知道了,原来鼓是可以这么打的。

John paul jones 宅男

老婆照例是受不了这样的音乐的,我却如同找到了精神鸦片。扬言要让后代喜欢这些摇滚英雄

照例鄙视一下土共,居然连
Led Zeppelin的官网都要给屏蔽了,天不亡土共不不可能阿!

Led Zeppelin were an English rock band formed in 1968 by Jimmy Page (guitar), Robert Plant (vocals), John Paul Jones (bass guitar, keyboards) and John Bonham (drums). With their heavy, guitar-driven sound, Led Zeppelin are regarded as one of the first heavy metal bands.[1][2][3] However, the band's individualistic style draws from many sources and transcends any one genre.[4] Their rock-infused interpretation of the blues and folk genres[5] also incorporated rockabilly,[6] reggae,[7] soul,[8] funk,[9] classical, Celtic, Indian, Arabic, pop, Latin and country.[10] The band did not release the popular songs from their albums as singles in the UK, as they preferred to develop the concept of album-oriented rock.[11][12]

Close to 30 years after disbanding following Bonham's death in 1980, the band continues to be held in high regard for their artistic achievements, commercial success and broad influence. The band have sold more than 300 million albums worldwide,[13][14][15][16][17] including 111.5 million sales in the United States[18] and they have had all of their original studio albums reach the U.S. Billboard Top 10,[19] with six reaching the number one spot. Led Zeppelin are ranked #1 on VH1's 100 Greatest Artists of Hard Rock.[20] Rolling Stone magazine has described Led Zeppelin as "the heaviest band of all time" and "the biggest band of the '70s".[21]

On 10 December 2007 the surviving members of Led Zeppelin reunited (along with deceased drummer John Bonham's son, Jason) for the Ahmet Ertegun Tribute Concert at The O2 Arena in London.







Led Zeppelin [details]
January 12, 1969 (Atlantic 19126)
Remastered 1994 (Atlantic 82632)
1. Good Times Bad Times (Page/Jones/Bonham)
2. Babe I'm Gonna Leave You (Page/Plant/Anne Bredon)
3. You Shook Me (Willie Dixon)
4. Dazed and Confused (Page)
5. Your Time Is Gonna Come (Page/Jones)
6. Black Mountain Side (Page)
7. Communication Breakdown (Page/Jones/Bonham)
8. I Can't Quit You Baby (Willie Dixon)
9. How Many More Times (Page/Jones/Bonham)



Led Zeppelin II [details]
October 22, 1969 (Atlantic 19127)
Remastered 1994 (Atlantic 82633)
1. Whole Lotta Love (Page/Plant/Jones/Bonham)
2. What Is and What Should Never Be (Page/Plant)
3. The Lemon Song (Page/Plant/Jones/Bonham)
4. Thank You (Page/Plant)
5. Heartbreaker (Page/Plant/Jones/Bonham)
6. Living Loving Maid (She's Just A Woman) (Page/Plant)
7. Ramble On (Page/Plant)
8. Moby Dick (Page/Jones/Bonham)
9. Bring It On Home (Page/Plant)



Led Zeppelin III [details]
October 5, 1970 (Atlantic 19128)
Remastered 1994 (Atlantic 82678)
1. Immigrant Song (Page/Plant)
2. Friends (Page/Plant)
3. Celebration Day (Page/Plant/Jones)
4. Since I've Been Loving You (Page/Plant/Jones)
5. Out On The Tiles (Page/Plant/Bonham)
6. Gallows Pole (Traditional)
7. Tangerine (Page)
8. That's The Way (Page)
9. Bron-Y-Aur Stomp (Page/Plant/Jones)
10. Hats Off To (Roy) Harper (Traditional)



[untitled fourth album] [details]
November 8, 1971 (Atlantic 19129)
Remastered 1994 (82638)
1. Black Dog (Page/Plant/Jones)
2. Rock and Roll (Page/Plant/Jones/Bonham)
3. The Battle of Evermore (Page/Plant)
4. Stairway To Heaven (Page/Plant)
5. Misty Mountain Hop (Page/Plant/Jones)
6. Four Sticks (Page/Plant)
7. Going To California (Page/Plant)
8. When The Levee Breaks (Page/Plant/Jones/Bonham/Memphis Minnie)



Houses Of The Holy [details]
March 28, 1973 (Atlantic 19130)
Remastered 1994 (82639)
1. The Song Remains The Same (Page/Plant)
2. The Rain Song (Page/Plant)
3. Over The Hills and Far Away (Page/Plant)
4. The Crunge (Page/Plant/Jones/Bonham)
5. Dancing Days (Page/Plant)
6. D'yer Mak'er (Page/Plant/Jones/Bonham)
7. No Quarter (Page/Plant/Jones)
8. The Ocean (Page/Plant/Jones/Bonham)



Physical Graffiti [details]
February 24, 1975 (Swan Song SS-200)
Remastered 1994 (92442)
Disc 1:
1. Custard Pie (Page/Plant)
2. The Rover (Page/Plant)
3. In My Time of Dying (Page/Plant/Jones/Bonham)
4. Houses of The Holy (Page/Plant)
5. Trampled Under Foot (Page/Plant/Jones)
6. Kashmir (Page/Plant/Bonham)
Disc 2:
1. In The Light (Page/Plant/Jones)
2. Bron-Yr-Aur (Page)
3. Down By The Seaside (Page/Plant)
4. Ten Years Gone (Page/Plant)
5. Night Flight (Page/Plant/Jones)
6. The Wanton Song (Page/Plant)
7. Boogie With Stu (Page/Plant/Jones/Bonham/Ian Stewart & Mrs. Valens)
8. Black Country Woman (Page/Plant)
9. Sick Again (Page/Plant)



Presence [details]
March 31, 1976 (Swan Song SS8416)
Remastered 1994 (92439)
1. Achilles Last Stand (Page/Plant)
2. For Your Life (Page/Plant)
3. Royal Orleans (Page/Plant/Jones/Bonham)
4. Nobody's Fault But Mine (Page/Plant)
5. Candy Store Rock (Page/Plant)
6. Hots On For Nowhere (Page/Plant)
7. Tea For One (Page/Plant)



In Through The Out Door [details]
August 15, 1979 (Swan Song SS16022)
Remastered 1994 (Swan Song 92443)
1. In The Evening (Page/Plant/Jones)
2. South Bound Saurez (Plant/Jones)
3. Fool In The Rain (Page/Plant/Jones)
4. Hot Dog (Page/Plant)
5. Carouselambra (Page/Plant/Jones)
6. All My Love (Plant/Jones)
7. I'm Gonna Crawl (Page/Plant/Jones)



Coda [details]
November 19, 1982 (Atlantic 90051)
Remastered 1994 (Atlantic 92444)
1. We're Gonna Groove (Ben E. King/James Bethea)
2. Poor Tom (Page/Plant)
3. I Can't Quit You Baby (Willie Dixon)
4. Walter's Walk (Page/Plant)
5. Ozone Baby (Page/Plant)
6. Darlene (Page/Plant/Jones/Bonham)
7. Bonzo's Montreux (Bonham)
8. Wearing and Tearing (Page/Plant)



Live Albums



The Song Remains The Same [details]
September 28, 1976 (Swan Song SS2-201)
Original soundtrack from the film The Song Remains The Same. All tracks were recorded live from three concerts at Madison Square Garden in 1973.
Disc 1:
1. Rock and Roll (Page/Plant/Jones/Bonham)
2. Celebration Day (Page/Plant/Jones)
3. The Song Remains The Same (Page/Plant)
4. The Rain Song (Page/Plant)
5. Dazed and Confused (Page)
Disc 2:
1. No Quarter (Page/Plant/Jones)
2. Stairway To Heaven (Page/Plant)
3. Moby Dick (Page/Jones/Bonham)
4. Whole Lotta Love (Page/Plant/Jones/Bonham)




How the West Was Won
May 27, 2003 (Atlantic 83587)
Disc 1:
1. LA Drone
2. Immigrant Song (Page/Plant)
3. Heartbreaker (Page/Plant/Jones/Bonham)
4. Black Dog (Page/Plant/Jones)
5. Over The Hills and Far Away (Page/Plant)
6. Since I've Been Loving You
7. Stairway to Heaven
8. Going to California
9. That's the Way
10. Bron-Y-Aur Stomp
Disc 2:
1. Dazed and Confused/Walter's Walk/The Crunge
2. What Is and What Should Never Be
3. Dancing Days
4. Moby Dick
Disc 3:
1. Whole Lotta Love/Boogie Chillun/Let's Have a Party/Hello Marylou/Going to California
2. Rock and Roll
3. The Ocean
4. Bring It on Home/Bring It on Back



2009年4月28日星期二

Lazy C++

Lazy C++: "Lzz: The Lazy C++ Programmer's Tool
Contents:

1. Synopsis
2. Preprocessor
3. Fuzzy Parsing
4. Supported C++ constructs
5. Lazy Class
6. Lazy Functor

Top
1. Synopsis
Lzz is a command-line tool. It is run as follows:

lzz options filenames

Options begin with a dash (-); other arguments are processed as filenames. Options can also be specified with the environment variable LZZ_OPTIONS.

The options are:

-i
Output inline function definitions to an inline file. The functions in this file will be inline if the macro LZZ_ENABLE_INLINE is defined when you run your compiler.

-t
Output function template definitions and class template static member object definitions to a template file. Use this option if you prefer to explicitly instantiate your templates.

-n
Output inline function template definitions to a template inline file. The functions in this file will be inline if the macro LZZ_ENABLE_INLINE is defined when you run your compiler.

-hx ext
Set the header file extension. The default is h.

-sx ext
Set the source file extension. The default is cpp.

-ix ext
Set the inline file extension. The default is inl.

-tx ext
Set the template file extension. The default is tpl.

-nx ext
Set the template inline file extension. The default is tnl.

-hl
Generate #line directives in the header file.

-sl
Generate #line directives in the source file.

-il
Generate #line directives in the inline file.

-tl
Generate #line directives in the template file.

-nl
Generate #line directives in the template inline file.

-hd
Write the header file only if it is different than the previous file.

-sd
Write the source file only if it is different than the previous file.

-id
Write the inline file only if it is different than the previous file.

-td
Write the template file only if it is different than the previous file.

-nd
Write the template inline file only if it is different than the previous file.

-c
Create the source file if the header file is created. Use this option if you want to make sure you header file is always self-contained.

-e
Preprocess all code. Normally code that is captured is not preprocessed, such as function bodies and template arguments. The code is copied verbatim to the appropriate output file. This option will preprocess this code, allowing the end delimiter to appear inside a macro. For example:

#define BEGIN void func () {
#define END }

BEGIN
// stuff ...
END

When preprocessing captured code the preprocessor behaves as a standard preprocessor. #hdr and #end directives, for example, are not allowed, and the #include directive has its standard meaning. The pragma preprocess_block allows you to explicitly set this option on or off within a file.

-o
Set the output directory for created files. If this directory is different than the directory containing the input file you will likely also want to use the -x option.

-x
Use absolute filenames in #line directives.

-d
Delete old files no longer created.

-I directory
Search directory for #include and #insert files. This option must be repeated to specify several directories. The directories are searched in the same order as the -I options are processed.

-D macro
Define a function or an object macro. Replacement text must follow the equals sign (=). If the equals sign is not present then the macro is defined to 1. Examples: -DSTR(X)=#X -D NULL_MACRO= -DDEBUG.

-a filename
Automatically #include a file before the input file is opened. The files are included in the same order as the -a options are processed.

-p
Preprocess to standard output. Function bodies, expressions and template arguments are not preprocessed, unless the code originates from a macro; this code is represented as a BLOCK token. No files are generated and no files are deleted.

-P
Preprocess to standard output. All code in the file is preprocessed. No files are generated and no files are deleted.

-E
Preprocess to standard output. All code in the file, and all code in #include files, is preprocessed. No files are generated and no files are deleted.

-r commands
Set the syntax error recover commands. See below for the syntax of the commands. The commands can also be specified in the environment variable LZZ_SYNTAX_RECOVER_COMMANDS; this environment variable is processed first.

-v
Print the values of the above options.

-hr
Print the help text for the -r option.

-T
Print the token names usable in the -r option.

-ver
Print the version number.

-h
-help
Print the usage and a brief description of the options.

The method the parser uses to recover from syntax errors is configured at runtime. The recover commands are specified with the -r option. The commands must be comma delimited. The recover commands are:

i:token
Insert a specific token.

i:[token,token,...]
Insert a specific sequence of tokens.

d
Delete one token.

d:max_num
Delete at most max_num tokens.

d:token
Delete a specific token.

r:token
Replace one token with a specific token.

r:token:max_num
Replace at most max_num tokens with a specific token.

r:token:token
Replace a specific token (the second) with a specific token (the first).

r:[token,token,...]
Replace one token with a specific sequence of tokens.

r:[token,token,...]:max_num
Replace at most max_num tokens with a specific sequence of tokens.

r:[token,token,...]:token
Replace a specific token with a specific sequence of tokens.

m
Move one token after one token to the right (swap token with next token).

m:max_move
Move one token after at most max_move tokens to the right.

m:max_move:max_num
Move at most max_num tokens after at most max_move tokens to the right.

Where token is a token name. The -T option prints the token names and their lexemes. Token names are not case sensitive.

Top
2. Preprocessor

Lzz has a built-in, fully compatible, C++ preprocessor. However, during normal use:

* Function bodies, expressions and template arguments are not preprocessed; this code is copied verbatim to the appropriate output file. (Use the -e option to preprocess all code. See above.)

* Only preprocessor directives in #include files are processed. C++ code is discarded. If you wish to include everything from another file use #insert.

In earlier versions, a dollar sign ($) was used to denote a directive. Lzz still accepts this use but may not in the future.

Lzz recognizes the following directives:

#include
The argument, after macro substitution, must be a filename of the form 'filename' or <filename>. Only preprocessor directives in the named file are processed. If you always include the same file consider using the -a option to automatically include the file.

#insert
Like #include except (Lzz) code is also processed.

#define
#if
#ifdef
#ifndef
#elif
#else
#endif
#line
#error
Same semantics as a standard C++ preprocessor.

#warning
The remaining characters on the line are printed to standard output.

#pragma
Lzz arguments optionally begin with lzz. If this word is present then Lzz will issue a warning if the pragma is not recognized. The following arguments are recognized:

inl [on | off] [ext]
If on then create an inline file with optional file extension. This pragma should precede any #inl directives.

tpl [on | off] [ext]
If on then create an template file with optional file extension. This pragma should precede any #tpl directives.

tnl [on | off] [ext]
If on then create an template inline file with optional file extension. This pragma should precede any #tnl directives.

once
The enclosing file is not included again.

preprocess_block [on | off]
Preprocess all code. See the -e option above. If an argument is not given on is assumed.

#hdr
...
#end
The delimited lines are copied verbatim to the header file.

#src
...
#end
The delimited lines are copied verbatim to the source file.

#inl
...
#end
The delimited lines are copied verbatim to the inline file, or to the header file if an inline file is not being created.

#tpl
...
#end
The delimited lines are copied verbatim to the template file, or to the header file if a template file is not being created.

#tnl
...
#end
The delimited lines are copied verbatim to the template inline file, or to the header file if a template inline file is not being created.

Top
3. Fuzzy Parsing
Unlike a real C++ parser, Lzz does not maintain a type and template name database. Lzz parses using context information only. However, because the C++ grammar is ambiguous this strategy is inadequate in several contexts; fortunately, Lzz can skip over most of them. The following code is captured by the lexer and passed to the parser as a single token.

* Function bodies

* Constructor member initializers

* Array bounds

* Enumerator initializers

Restrictions:

All , characters must be enclosed in parenthesis.

Example:

enum { int I = (Q <int,char>::I), J }

* Assignment, direct, and brace-enclosed initializers

* Default function arguments

Restrictions:

All , characters must be enclosed in parenthesis.

Example:

void f (int (* g) () = (h <int, int>)) { }

* Template arguments

Restrictions:

All < and > characters not delimiting nested template arguments must be enclosed in parenthesis.

Example:

A <B <C>, (X < Y)>::D d;

* Default non-type template arguments

Restrictions:

All ,, < and > characters must be enclosed in parenthesis.

Example:

template <int (* g) () = (h <int, int>)> class A { }

Outside the above constructs, there are the following restrictions:

* Named parameters must be used in function types.

Example:

int f (int (i), int (* g) (int j)) { }

f is a function taking two arguments: an int, and a pointer to a function taking an int and returning an int.

* Named parameters must be used in the catch clauses of function try blocks.

Example:

A ()
try
: i (0)
{ }
catch (T t)
{ }

* Named parameters must be used in template declarations.

Example:

template <class T, int I, template <class R> class S>
class A
{ }

* The first expression in a direct initializer must be enclosed within a redundant set of parenthesis, or the Lzz keyword _dinit must precede the direct initializer.

Example:

A a1 ((X * Y), Z);
A a2 _dinit (X * Y, Z);

Top
4. Supported C++ Constructs

Lzz recognizes all names, qualified and unqualified, with and without template arguments, including constructors, destructors, and operator and conversion function names.

Example:

template <class T>
class A
{
A () { }
~ A <T> () { }
(A) (A const & a);
B <int, R::S>::C c;
typename T::R const & operator + () const { }
operator class Z * () const { }
operator Z * () const { }
friend B::~ B ();
friend D::operator int * const () const;
friend B (::operator +) (B & b1, B & b2);
template <>
friend typename T::template S <int> T::template h <int> ();
}

Lzz recognizes the following C++ constructs:

namespace definition

An unnamed namespace and all enclosed declarations are output to the source file. This rule overrides all others.

The name of a named namespace may be qualified.

namespace A::B { typedef int I; }

is equivalent to:

namespace A { namespace B { typedef int I; } }

typedef

Typedefs are output to the header file.

linkage specification

A linkage specification of the form

extern string-literal { declaration-seq }

does not affect where the enclosed declarations are output; in this respect it is similar to a named namespace. A linkage specification of the form

extern string-literal declaration

is treated as an extern specifier for the purpose of determining whether the contained declaration is a definition.

using directive
using declaration

Using directives and using declarations are output to the source file.

object declaration

Object declarations are output to the header file. Note: an object declaration has either an extern specifier or a linkage specification and does not have an initializer (otherwise it would be a definition).

object definition

An object definition is output to the source file, and, if it is neither static, explicitly const, nor qualified, its declaration is output to the header file.

enumeration

Enumerations are output to the header file.

function declaration
function template declaration

If a function declaration or a function template declaration is static, it is output to the source file; otherwise, it is output to the header file.

function definition

If a function definition is static, it is output to the source file; otherwise, if the definition is inline:

* if the option -i is specified, it is output to the inline file, and, if not qualified, its declaration is output to the header file; otherwise,

* it is output to the header file.

If the definition is neither static nor inline, it is output to the source file, and, if not qualified, its declaration is output to the header file.

function template explicit specialization

If function template explicit specialization is static, it is output to the source file; otherwise, if the definition is inline:

* if the option -i is specified, it is output to the inline file, and its declaration is output to the header file; otherwise,

* it is output to the header file.

If the definition is neither static nor inline, it is output to the source file, and its declaration is output to the header file.

function template definition

If a function template definition is static, it is output to the source file; otherwise, if the definition is inline:

* if the option -n is specified, it is output to the template inline file, and, if not qualified, its declaration is output to the header file; otherwise,

* it is output to the header file.

If the definition is neither static nor inline:

* if the option -t is specified, it is output to the template file, and, if not qualified, its declaration is output to the header file; otherwise,

* it is output to the header file.

class declaration
class template declaration

Class declarations and class template declarations are output to the header file.

class definition
class template explicit specialization

Class definitions and class template explicit specializations are output to the header file. Member definitions are output accordingly:

* Static objects are defined in the source file.

* Function definitions, if inline:

o if the option -i is specified, they are defined to the inline file; otherwise,

o they are defined in the header file.

If not inline, they are defined in the source file.

* Function template definitions, if inline:

o if the option -n is specified, they are defined to the template inline file; otherwise,

o they are defined in the header file.

If not inline:

o if the option -t is specified, they are defined to the template file; otherwise,

o they are defined in the header file.

* Friend function definitions and friend function template definitions are defined inside the class definition.

A declarator cannot follow a class definition. That is, the following constructs are not supported:

typedef struct _A { int i; } A;
struct B { int i; } b;

A semi-colon thus is not necessary after the definition.

class template definition
class template partial specialization

Class template definitions and class template partial specializations are output to the header file. Member definitions are output accordingly:

* Static objects, if the option -t is specified, are defined in the template file; otherwise, they are defined in the header file.

* Function definitions and function template definitions, if inline:

o if the option -n is specified, they are defined to the template inline file; otherwise,

o they are defined in the header file.

If not inline, they are defined in the header file.

* Friend function definitions and friend function template definitions are defined inside the class definition.

explicit template instantiation

Explicit template instantiations are output to the source file.

Top
5. Lazy class

A lazy class is a shorthand notation for a class with a single constructor that only initializes base types and member variables. Here is an example:

class A (int i, int j = 0) : public Base (j)
{
int k = 0;
// ...
}

This is equivalent to the following Lzz code:

class A : public Base
{
int i;
int k;
// ...
public:
inline explicit A (int i, int j = 0)
: Base (j), i (i), k (0)
{
}
~ A ()
{
}
}

A lazy class is distinguished from an ordinary class by a parameter list following the class name. This is the constructor parameter list. It is also a list of the initial member objects of the class, minus those that are passed to a base type. The parenthesized expression list following a base type are the arguments passed to the base type in the constructor's member initializer list. For example, j above is passed to Base so it does not become a member object of A. The parenthesized expression list after a base type is optional; if it is not present then the base type is not initialized in the constructor's member initializer list.

Member objects declared in a lazy class (like k above) can be initialized with an assignment or direct initializer. The initializer becomes the member initializer for that variable.

Lazy classes are particularly useful when writing visitors. For example:

namespace
{
// get class base specifier list
struct GetBaseSpecList (BaseSpecPtrVector & base_spec_list)
: NodeVisitor
{
// base-spec -> obj-name
void visit (BaseSpec1Node & node) const
{
// ...
}

// base-spec -> VIRTUAL access-opt obj-name
void visit (BaseSpec2Node & node) const
{
// ...
}

// base-spec -> access virtual-opt obj-name
void visit (BaseSpec3Node & node) const
{
// ...
}
}
}

namespace gram
{
// get class base specifier list
void getBaseSpecList (basl::Nonterm & nonterm,
BaseSpecPtrVector & base_spec_list)
{
nonterm.accept (GetBaseSpecList (base_spec_list));
}
}

A lazy class can be defined anywhere a class can be defined. It can also be defined as a template. For example:

template <class T = int>
class A (T * t)
{
// a nested lazy class template
template <template <class T> class S>
class B (S <int> const & s)
{
}
}

Top
6. Lazy Functor
A lazy functor is a shorthand notation for a functor. Here is an example:

void Spud (int i, int j = 0; int k, int l = 0) const
: public Base (j)
{
}

This is equivalent to the following lazy class:

struct Spud (int i, int j = 0) : public Base (j)
{
void operator () (int k, int l = 0) const
{
}
}

A lazy functor is distinguished by the semicolon in the (otherwise) function parameter list. The parameters before the semicolon are the parameters to the constructor, and ones after are the parameters to the operator() function. Any const volatile specifiers after the parameter list apply to the operator() function, not the constructor, and similarly for any throw specification. Function specifiers can be applied to the operator() function, as well as a function try block. For example:

inline void Spud (int i, int j = 0; int k, int l = 0) const throw (A)
: public Base (j)
try
{
}
catch (...)
{
}

A functor can also be just declared. For example:

virtual void Spud (int i, int j = 0; int k, int l = 0) const = 0
: Base (j);

If a lazy functor is virtual, the generated class destructor is also virtual.

A lazy functor can be declared or defined anywhere a class can be defined. It can also be declared or defined as a template. For example:

template <class T>
void Spud (int i, int j = 0; int k, int l = 0) const : public Base (j)
{
}

class A
{
template <class T>
virtual void Spud (int i, int j = 0; int k, int l = 0) const = 0
: public Base (j);
}"

C++ 學習筆記

C++ 學習筆記

程序员实验室 - C++基础教程 - C++ Tutorial

程序员实验室 - C++基础教程 - C++ Tutorial