2014-09-10 15:09:35 setseqq22 阅读数 202
  • C语言/C++学习指南》语法篇(从入门到精通)

    一门初级、从入门到精通的C语言C++语法教程,由毕业于清华大学的业内人士执课。从简单的HelloWorld入门程序,到深入的C语言C++核心概念,均为您娓娓道来,言之必详、听之必懂。让C语言C++编程变得简单,让C语言C++编程变得有趣,让喜欢C语言C++的人学会C语言C++!

    161920 人正在学习 去看看 邵发

C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码 。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建 议,以进一步加强这方面的清单。  

0、http://www.boost.org/--boost库的官方网站
1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段
2、http://www.hotscripts.com/category/c-cpp/scripts-programs/ Hotscripts --提供数以百计的C和C++脚本和程序。所有程序都分为不同的类别。 
3、http://www.planetsourcecode.com/vb/default.asp?lngWId=3 --超过万行C和C++免费的源代码 
4、http://freshmeat.net/browse/164/ --超过9000个C编写的项目。 
5、http://www.daniweb.com/code/c.html --DANIWEB提供的实用代码段 。 
6、http://www.programmersheaven.com/tags/C/ --programmersheaven.com上的C编程资源。 
7、http://www.ddj.com/code/ddj.html --Dr. Dobb’s Journal的源代码。 
8、http://www.cprogramming.com/cgi-bin/source/source.cgi --C和C + +编程资源。
9、http://www.codecogs.com/ --CodeCogs是一项协作的开放源码库,C/C++的数值方面的组件。 
10、http://www.google.com /codesearch?q=programming++lang:c&cs_r=lang:c

      http://www.google.com/codesearch?q=programming++lang:c&cs_r=lang:c --谷歌代码的C源代码。 
11、http://www.codepedia.com/1/C --CodePedia是一个开放的关于系统编程和其他与电脑有关的议题。 
12、http://www.cis.temple.edu/~ingargio/cis71/code/ --为学生提供的一个简单的C语言程序的列表。 
13、http://www.codeproject.com/?cat=2 --codeproject提供的C/C++资源代码项目。
14、http://www.thefreecountry.com/sourcecode/cpp.shtml --以下是一些C和C++库的DLL,VCLs,源代码,元件,模块,应用程序框       架,类库,源代码片段等,你可以在您的项目中使用而不需要支付费用和版税。 
15、http://people.sc.fsu.edu /~burkardt/cpp_src/cpp_src.html

      http://people.sc.fsu.edu/~burkardt/cpp_src/cpp_src.html [/URL] --这是一个全面的关于C++的345个源代码清单。 
16、http://www.cplusplus.com/src/ --C++写的通用控制台程序和Windows程序代码清单。 
17、http://users.cs.fiu.edu/~weiss/dsaa_c++/code/ --C++语言数据结构与算法分析(第二版)的源代码。 
18、http://c.snippets.org/ --C源代码片段。 
19、http://www.bbdsoft.com/downloads.html --C++源代码。 
20、http://www.moshier.net/ 天文学和数值软件源代码 
21、http://cplus.about.com/od/cgames/C_Games_with_Source_Code.htm --游戏有关的C++源代码。 
22、http://cliodhna.cop.uop.edu /~hetrick/c-sources.html

      http://cliodhna.cop.uop.edu/~hetrick/c-sources.html --免费的C/C++数值计算源代码。 
23、http://www.mathtools.net/C_C__/Utilities/index.html --C/C++工具。 
24、http://www.programmerworld.net/resources/c_library.htm --免费C++源代码和其它有用的工具。 
25、http://www.cmcrossroads.com/bradapp/links/cplusplus-links.html --布拉德阿普尔顿的C++链接-资源,项目,图书馆,教学和编码。 
26、http://www.robertnz.net/cpp_site.html --这是一个收集了数C/C++网站链接列表的网页。 
27、http://www.josuttis.com/libbook/examples.html --在这里,你可以看到并下载所有的本书的C++标准库例子 。 
28、ftp://66.77.27.238/sourcecode/cuj/ --C/C++用户杂志 
29、ftp://66.77.27.238/sourcecode/wd/ --Windows开发者网络 
30、http://www.einet.net/directory/65892/Developers.htm --C程序 
31、http://www.daniweb.com/code/cplusplus.html --实用代码段。 
32、http://snippets.dzone.com/tag/c --C++源代码 
33、http://www.programmersheaven.com/tags/C --C++编程资源,programmersheaven.com 
34、http://www.google.com/codesearch?hl=en&lr=&q=programming --谷歌代码搜索-C++编程语言 
35、http://www.codepedia.com/1/Cpp --CodePedia是一个开放的关于系统编程和其他与电脑有关的议题的网站。 
36、http://www.codebeach.com/index.asp?TabID=1&CategoryID=3 --C++源代码,Codebeach提供 
37、http://freshmeat.net/browse/165/ --5000项目写的C++编程语言 
38、http://cplus.about.com/od/codelibrary/Code_Library_for_C_C_and_C.htm --代码库C、C + +和C#。 
39、http://www.c.happycodings.com/ --Visual Basic、PHP、ASP技术、C、C++大全。 
40、http://www.blueparrots.com/ --Borland C游戏,图像和声音源代码范例。 
41、http://www.java2s.com/Code/Cpp/CatalogCpp.htm --C++源代码。 
42、http://www.yeohhs.com/modules/mydownloads/ --C与C++电子书和源代码示例。 
43、http://www.brpreiss.com/books/opus4/programs/index.html C++的数学方程和公式源代码。 
44、[URL=http://users.cs.fiu.edu][/URL]http://users.cs.fiu.edu/ C++。 
45、[URL=http://www.josuttis.com/libbook/examples.html][/URL]

      http://www.josuttis.com/libbook/examples.html --C++标准库-教程和参考资料。 
46、http://emr.cs.uiuc.edu/~reingold/calendars.shtml Edward M. Reingold's Calendar Book, Papers, and Code。 
47、http://cpp.snippets.org/ --c++源代码档案。 
48、http://ubiety.uwaterloo.ca/~tveldhui/papers/techniques/ --用C和C++的解决科学问题。 
49、http://c.ittoolbox.com/topics/core-c/ --C/C++的IT工具框。 
50、http://www.le.ac.uk/cc/tutorials/c/ccccdbas.html --本文件中包含有大量的C示例程序。

2017-02-23 09:52:00 diaohangan3506 阅读数 20
  • C语言/C++学习指南》语法篇(从入门到精通)

    一门初级、从入门到精通的C语言C++语法教程,由毕业于清华大学的业内人士执课。从简单的HelloWorld入门程序,到深入的C语言C++核心概念,均为您娓娓道来,言之必详、听之必懂。让C语言C++编程变得简单,让C语言C++编程变得有趣,让喜欢C语言C++的人学会C语言C++!

    161920 人正在学习 去看看 邵发

C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议,以进一步加强这方面的清单。

1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段

2、http://www.hotscripts.com/category/c-cpp/scripts-programs/ Hotscripts --提供数以百计的C和C++脚本和程序。所有程序都分为不同的类别。

3、http://www.planetsourcecode.com/vb/default.asp?lngWId=3 --超过万行C和C++免费的源代码

4、http://freshmeat.net/powse/164/ --超过9000个C编写的项目。

5、http://www.daniweb.com/code/c.html --DANIWEB提供的实用代码段 。

6、http://www.programmersheaven.com/tags/C/ --programmersheaven.com上的C编程资源。

7、http://www.ddj.com/code/ddj.html --Dr. Dobb’s Journal的源代码。

8、http://www.cprogramming.com/cgi-bin/source/source.cgi --C和C + +编程资源。

9、http://www.codecogs.com/ --CodeCogs是一项协作的开放源码库,C/C++的数值方面的组件。

10、http://www.google.com/codesearch?q=programming++lang:c&cs_r=lang:c --谷歌代码的C源代码。

11、http://www.codepedia.com/1/C --CodePedia是一个开放的关于系统编程和其他与电脑有关的议题。

12、http://www.cis.temple.edu/~ingargio/cis71/code/ --为学生提供的一个简单的C语言程序的列表。

13、http://www.codeproject.com/?cat=2 --codeproject提供的C/C++资源代码项目。

14、http://www.thefreecountry.com/sourcecode/cpp.shtml --以下是一些C和C++库的DLL,VCLs,源代码,元件,模块,应用程序框架,类库,源代码片段等,你可以在您的项目中使用而不需要支付费用和版税。

15、http://people.sc.fsu.edu/~burkardt/cpp_src/cpp_src.html --这是一个全面的关于C++的345个源代码清单。

16、http://www.cplusplus.com/src/ --C++写的通用控制台程序和Windows程序代码清单。

17、http://users.cs.fiu.edu/~weiss/dsaa_c++/code/ --C++语言数据结构算法分析(第二版)的源代码。

18、http://c.snippets.org/ --C源代码片段。

19、http://www.bbdsoft.com/downloads.html --C++源代码。

20、http://www.moshier.net/ 天文学和数值软件源代码

21、http://cplus.about.com/od/cgames/C_Games_with_Source_Code.htm --游戏有关的C++源代码。

22、http://cliodhna.cop.uop.edu/~hetrick/c-sources.html --免费的C/C++数值计算源代码。

23、http://www.mathtools.net/C_C__/Utilities/index.html --C/C++工具。

24、http://www.programmerworld.net/resources/c_lipary.htm --免费C++源代码和其它有用的工具。

25、http://www.cmcrossroads.com/padapp/links/cplusplus-links.html --布拉德阿普尔顿的C++链接-资源,项目,图书馆,教学和编码。

26、http://www.robertnz.net/cpp_site.html --这是一个收集了数C/C++网站链接列表的网页。

27、http://www.josuttis.com/libbook/examples.html --在这里,你可以看到并下载所有的本书的C++标准库例子 。

28、ftp://66.77.27.238/sourcecode/cuj/ --C/C++用户杂志

29、ftp://66.77.27.238/sourcecode/wd/ --Windows开发者网络

30、http://www.einet.net/directory/65892/Developers.htm --C程序

31、http://www.daniweb.com/code/cplusplus.html --实用代码段。

32、http://snippets.dzone.com/tag/c --C++源代码

33、http://www.programmersheaven.com/tags/C --C++编程资源,programmersheaven.com

34、http://www.google.com/codesearch?hl=en&lr=&q=programming --谷歌代码搜索-C++编程语言

35、http://www.codepedia.com/1/Cpp --CodePedia是一个开放的关于系统编程和其他与电脑有关的议题的网站。

36、http://www.codebeach.com/index.asp?TabID=1&CategoryID=3 --C++源代码,Codebeach提供

37、http://freshmeat.net/powse/165/ --5000项目写的C++编程语言

38、http://cplus.about.com/od/codelipary/Code_Lipary_for_C_C_and_C.htm --代码库C、C + +和C#。

39、http://www.c.happycodings.com/ --Visual Basic、PHP、ASP技术、C、C++大全。

40、http://www.blueparrots.com/ --Borland C游戏,图像和声音源代码范例。

41、http://www.java2s.com/Code/Cpp/CatalogCpp.htm --C++源代码。

42、http://www.yeohhs.com/modules/mydownloads/ --C与C++电子书和源代码示例。

43、http://www.ppreiss.com/books/opus4/programs/index.html C++的数学方程和公式源代码。


44、http://users.cs.fiu.edu/ C++。

45、http://www.josuttis.com/libbook/examples.html --C++标准库-教程和参考资料。

46、http://emr.cs.uiuc.edu/~reingold/calendars.shtml Edward M. Reingold's Calendar Book, Papers, and Code。

47、http://cpp.snippets.org/ --c++源代码档案。

48、http://ubiety.uwaterloo.ca/~tveldhui/papers/techniques/ --用C和C++的解决科学问题。

49、http://c.ittoolbox.com/topics/core-c/ --C/C++的IT工具框。

50、http://www.le.ac.uk/cc/tutorials/c/ccccdbas.html --本文件中包含有大量的C示例程序。

 

转载出处:http://blog.csdn.net/mmz_xiaokong/archive/2010/07/25/5765290.aspx

转载于:https://www.cnblogs.com/dedeblog/p/6432064.html

2015-02-04 14:02:15 Jasmine_shine 阅读数 811
  • C语言/C++学习指南》语法篇(从入门到精通)

    一门初级、从入门到精通的C语言C++语法教程,由毕业于清华大学的业内人士执课。从简单的HelloWorld入门程序,到深入的C语言C++核心概念,均为您娓娓道来,言之必详、听之必懂。让C语言C++编程变得简单,让C语言C++编程变得有趣,让喜欢C语言C++的人学会C语言C++!

    161920 人正在学习 去看看 邵发

自从知道了很多开源的C/C++源码网站以来,就开始不断地去搜索源码。咋一看,全是国外的网站,看来外国人编程普遍都比国内厉害,真心拜服。起初这些源码的网站主要是这篇博文推荐的,具体网址是:http://www.cnblogs.com/feisky/archive/2010/03/05/1679160.html。到目前为止,我承认我翻看这些牛人的网站,看得是眼花缭乱,甚至于说这么多源代码,有的甚至是像一些大型应用程序的开源代码,真心看得很吃力。俗话说,一口气吃不成一个胖子,我就开始从小程序、小项目、少平台开始研究吧。

第一步:cplusplus网站

具体网址:http://www.cplusplus.com里面一些很好的文章和论坛都可以值得边逛边学习。以前觉得逛街买衣服很充实,现在觉得逛这种技术型的网站真的也很充实,只是现在还在基础阶段,就希望有朝一日,我也不用学习别人的代码,让别人学习我的代码。我喜欢逛里面的articles栏的how to子栏目,这里面的子栏目主要是偏向于一个大的项目,比如说怎么构建一个操作系统?怎么在平台上发送短信?这些都是比较实践性的。另外的一些就比较注重基础,比如算法等。

另外,数据结构的源程序网址:http://users.cs.fiu.edu/~weiss/dsaa_c++/code/。很值得参考。

第二步:IT公司面试手册网

具体网址:http://www.mianwww.com/,第一次见到这么全面的IT面试手册,真的很惊讶,原来网络是无所不能的。

第三步:codeproject网站

具体网址:http://www.codeproject.com,里面相较于cplusplus来说,程序和项目都比较大。其实从字面就可以看出,cplusplus就专注于语法,你想啊,一般语法的都比较浅显易懂,而codeproject就比较偏重于一个实际的项目,既然牵扯到项目,就会有平台的问题,自然而然就大了。

第四步:猪八戒威客网

猪八戒威客网是一个需求和被需求网站,有需求的人可以在里面发布需求信息,然后给予一定的佣金。对于实战来说是一笔可观的学习方式,不仅将理论得到了实践,更重要的是赚钱啦,这样就让我们的精神世界有了更深层次上的升华。具体网址是:

http://www.zhubajie.com/?utm_source=user_id3281870&utm_medium=UNION&utm_campaign=not_set&utm_content=http%3A%2F%2Fwww.zhubajie.com%2F


2012-12-10 15:57:54 sign1991 阅读数 606
  • C语言/C++学习指南》语法篇(从入门到精通)

    一门初级、从入门到精通的C语言C++语法教程,由毕业于清华大学的业内人士执课。从简单的HelloWorld入门程序,到深入的C语言C++核心概念,均为您娓娓道来,言之必详、听之必懂。让C语言C++编程变得简单,让C语言C++编程变得有趣,让喜欢C语言C++的人学会C语言C++!

    161920 人正在学习 去看看 邵发

C++初级学习的一些实例代码<谭浩强版C++>

参考文档:C++学习总结

<>

<>

<枚举类型与switch语句>

#include <iostream>
using namespace std;

void main()
{
    enum {red,blue,yellow,black};
    int se;
    cin>>se;
    switch(se)
    {
    case red:cout<<"red.";break;
    case blue:cout<<"blue.";break;
    case yellow:cout<<"yellow.";break;
    case black:cout<<"black.";break;
    default :cout<<"have no ideal.";break;
    }
    system("pause");
}

<延时程序>

void main()
{
    cout<<"Enter the delay time,in seconds:";
    float secs;
    cin>>secs;
    clock_t delay=secs*CLOCKS_PER_SEC;//CLOCKS_PER_SEC等于每秒钟包含的系统时间单位数
    cout<<"starting\a\n";
    clock_t start=clock();                    //clock_t作为clock()返回类型,根据系统不同,可能是long、usigned long等
    while(clock()-start<delay)
        ;
    cout<<"done!\a\n";
    system("pause");
}

<类模板——int/float/char型比较>

#include <iostream>
using namespace std;

template <class numtype>
class Compare
{
public:
    Compare(numtype a,numtype b){x=a;y=b;}
    numtype max(){return (x>y)?x:y;}
    numtype min(){return (x<y)?x:y;}
private:
    numtype x,y;
};

void main()

{

    Compare <int>cmp1(4,5);//使用类模板时,对象的定义方式与一般对象略有不同

   Compare <double>cmp2(23,56,43.72);

    Compare <char>cmp3('a','A');

    cout<<cmp1.max()<<"is the Maximum of two INTEGER number."<<endl;

   cout<<cmp1.min()<<"is the Minimum of two INTEGER number."<<endl;

   cout<<cmp2.max()<<"is the Maximum of two DOUBLE number."<<endl;

   cout<<cmp2.min()<<"is theMinimum of two DOUBLE number."<<endl;

    cout<<cmp3.max()<<"is the Maximum of two CHAR number."<<endl;

    cout<<cmp3.min()<<"is the Maximum of twoCHAR number."<<endl;

}

<运算符重载——复数相加>

【运算符重载作为类的成员函数】

#include <iostream>
using namespace std;
class Complex
{
public:
    Complex(double r=0,double i=0){real=r;imag=i;cout<<"object set"<<endl;};
    Complex operator+(Complex &c2);//运算符重载
    ~Complex(){cout<<"object free"<<endl;};
    void display();
private:
    double real;
    double imag;
};

Complex Complex::operator+(Complex &c2)//返回值为对象
{
    Complex c;
    c.real=real+c2.real;
    c.imag=imag+c2.imag;
    return c;
}
void Complex::display()
{
    cout<<"("<<real<<","<<imag<<"i)"<<endl;
}

void main()
{
    Complex c1(3,4),c2(5,-10),c3;
    c3=c1+c2;//运算符重载
    cout<<" c1=";c1.display();
    cout<<" c2=";c2.display();
    cout<<" c1+c2=";c3.display();
}

【运算符重载作为友元函数时,程序的一些修改】

class Complex
{
public:
    Complex(double r=0,double i=0){real=r;imag=i;cout<<"object set"<<endl;};
    friend Complex operator+(Complex &c1,Complex &c2);//运算符重载
    ~Complex(){cout<<"object free"<<endl;};
    void display();
private:
    double real;
    double imag;
};

Complex operator+(Complex &c1,Complex &c2)
{
    Complex c;
    c.real=c1.real+c2.real;
    c.imag=c1.imag+c2.imag;
    return c;
}

<运算符重载——">>/<<">

#include <iostream>
using namespace std;

class Complex
{
public:
    Complex(double r=0,double i=0):real(r),imag(i){};//参数列表初始化构造函数
    friend ostream & operator <<(ostream &,Complex &);//作为友元函数声明重载运算符"<<"
    friend istream & operator >>(istream &,Complex &);//作为友元函数声明重载运算符">>"
private:
    double real;
    double imag;
};

ostream & operator <<(ostream &output,Complex &c)
{
    output<<"("<<c.real;
    if(c.imag>=0)
        output<<"+";
    output<<c.imag<<"i)";
    return output;
}
istream & operator>>(istream &input,Complex &c)
{
    cout<<"input real part and imaginary part of complex number:";
    input>>c.real>>c.imag;
    return input;
}

 void main()
 {
    Complex c1,c2;
    cin>>c1>>c2;
    cout<<"c1="<<c1<<endl;
    cout<<"c2="<<c2<<endl;
 }


<派生类构造函数对基类、对象、和派生类成员初始化>

#include <iostream>
#include <string>
using namespace std;

class Student
{
public:
    Student(int n,string nam);
    void display();
protected:
    int num;
    string name;
};
class Student1:public Student
{
public:
    Student1(int,string,int,string,int,string);
    void show();
    void show_monitor();
private:
    Student monitor;//定义了一个基类子对象
    int age;
    string addr;
};

Student::Student(int n,string nam):num(n),name(nam){};
void Student::display()
{
        cout<<"num:"<<num<<endl;
        cout<<"name:"<<name<<endl;
}
Student1::Student1(int n,string nam,int n1,string nam1,int a,string ad):Student(n,nam),monitor(n1,nam1),age(a),addr(ad){};
void Student1::show()
{
        cout<<"This student is :"<<endl;
        display();
        cout<<"age:"<<age<<endl;
        cout<<"address:"<<addr<<endl;
}
void Student1::show_monitor()
{
        cout<<"Class monitor is :"<<endl;
        monitor.display();
}

 void main()
 {
    Student1 stud1(10010,"Wang_Ning",10001,"Li_sun",19,"115Beijing Road.Shanghai");
    stud1.show();
    stud1.show_monitor();
 }

【多继承派生类的构造函数初始化

*class Student{};
*class Student1:public Student{};
*class Student2:public Student1{};

Student::Student(int num,string name);
Student1::Student1(int n,string name,int a):Student(n,nam){};
Student2::Student2(int n,string nam,int a,int s):Student1(n,nam,a){};


<多重继承中的虚基类>

#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
    Person(string nam,char s,int a):name(nam),sex(s),age(a){};
protected:
    string name;
    char sex;
    int age;
};
class Teacher:virtual public Person
{
public:
    Teacher(string nam,char s,int a,string t):Person(nam,s,a),title(t){};
protected:
    string title;
};
class Student:virtual public Person
{
public:
    Student(string nam,char s,int a,float sco):Person(nam,s,a),score(sco){};
protected:
    float score;
};
class Graduate:public Teacher,public Student
{
public:
   //构造函数要对Person类初始化   

    Graduate(string nam,int a,char s,string t,float sco,float w):Person(nam,s,a),Teacher(nam,s,a,t),Student(nam,s,a,sco),wage(w){};
    void Graduate::show()
    {
        cout<<"name:"<<name<<endl;
        cout<<"age:"<<age<<endl;
        cout<<"sex:"<<sex<<endl;
        cout<<"score:"<<score<<endl;
        cout<<"title:"<<title<<endl;
        cout<<"wage:"<<wage<<endl;
    }
private:
    float wage;
};

void main()
{
    Graduate grad1("Wang-li",24,'f',"assistant",89.5,1234.5);
    grad1.show();
}


<多态性——静态多态性+动态多态性+纯虚函数+抽象类>

#include <iostream>
using namespace std;

class Shape                                                                                                  //声明抽象基类
{
public:
    virtual float area()const=0;
    virtual void shapeName()const=0;

};

class Point:public Shape
{
public:
    Point(float,float);
    void setPoint(float,float);
    float getX()const{return x;}
    float getY()const{return y;}
    friend ostream & operator <<(ostream &,const Point &);
    virtual float area()const {return 0;};                                                             //必须要有,否则编译报错
    virtual void shapeName()const{cout<<"Point:";};                                       //对虚函数进行在定义
protected:
    float x;
    float y;
};

class Circle:public Point
{
public:
    Circle(float,float,float);
    void setRadius(float);
    float getRadius()const;
    virtual float area()const;
    friend ostream &operator<<(ostream &,const Circle &);
    virtual void shapeName()const{cout<<"Circle:";};                                        //对虚函数进行在定义
protected:
    float radius;
};

class Cylinder:public Circle
{
public:
    Cylinder(float,float,float,float);
    void setHeight(float);                                                                                  //不能声明成const类型,会报错
    float getHeight()const;
    virtual float area()const;
    float volume()const;
    friend ostream &operator <<(ostream &,const Cylinder &);
    virtual void shapeName()const{cout<<"Cylinder:";};                                   //对虚函数进行在定义
private:
    float height;
};

Point::Point(float a=1,float b=1):x(a),y(b){};
void Point::setPoint(float a,float b)
{
    x=a;
    y=b;
}
ostream & operator <<(ostream &output,const Point &p)
{
    output<<"center=["<<p.x<<","<<p.y<<"]"<<endl;
    return output;
}

Circle::Circle(float a=1,float b=1,float r=1):Point(a,b),radius(r){};
void Circle::setRadius(float r)
{
    radius=r;
}
float Circle::getRadius()const{return radius;}
float Circle::area()const
{
    return 3.1415*radius*radius;
}
ostream &operator <<(ostream &output,const Circle &c)
{
    output<<"Center=["<<c.x<<","<<c.y<<"],r="<<c.radius<<",area="<<c.area()<<endl;
    return output;
}

Cylinder::Cylinder(float a,float b,float r,float h):Circle(a,b,r),height(h){};
void Cylinder::setHeight(float h)
{
    height=h;
}
float Cylinder::getHeight()const
{
    return height;
}
float Cylinder::area()const
{
    return 2*3.1415*Circle::area()+2*3.1415*radius*height;
}
float Cylinder::volume()const
{
    return Circle::area()*height;
}
ostream &operator <<(ostream &output,const Cylinder &cy)
{
    output<<"center=["<<cy.x<<","<<cy.y<<"],r="<<cy.radius<<",h="<<cy.height<<",area="<<cy.area()<<",volume="<<cy.volume()<<endl;
    return output;
}

void main()
{
    Point point(3.2,4.5);
    Circle circle(2.4,1.2,5.6);
    Cylinder cylinder(3.5,6.4,5.2,10.5);
    point.shapeName();                                        //指定类名调用成员函数
    cout<<point<<endl;
    circle.shapeName();                                       //指定类名调用成员函数
    cout<<circle<<endl;
    cylinder.shapeName();                                   //指定类名调用成员函数
    cout<<cylinder<<endl<<endl;

    Shape *pt;
    pt=&point; 
    pt->shapeName();                                         //利用基类指针调用成员函数

    cout<<point<<endl;
    pt=&circle;
    pt->shapeName();                                        //利用基类指针调用员函数
    cout<<circle<<endl;
    pt=&cylinder;
    pt->shapeName();                                        //利用基类指针调用成员函数
    cout<<cylinder<<endl;
    
    Point *pt;
    pt=&cylinder;
    pt->shapeName();
    cout<<*pt<<endl;                                       //利用基类指针实现运算符重载会有局限性,能显示运算符中派生类增加的数据成员

}

<多态性——基类与派生类的成员函数调用>

函数重载——函数名相同,但形参个数、形参类型不同

【指定基类名调用同名函数——函数名、形参个数、形参类型相同时,有局限性】

#include <iostream>
#include <string>
using namespace std;

class Student
{
public:
    Student(int,string,float);
    void display();
protected:
    int num;
    string name;
    float score;
};
class Graduate:public Student
{
public:
    Graduate(int,string,float,float);
    void display();
private:
    float pay;
};

Student::Student(int n,string nam,float s):num(n),name(nam),score(s){};
void Student::display()
{
    cout<<"num:"<<num<<",name:"<<name<<",score:"<<score<<endl;
}
Graduate::Graduate(int n,string nam,float s,float p):Student(n,nam,s),pay(p){};
void Graduate::display()
{
    cout<<"num:"<<num<<",name:"<<name<<",score:"<<score<<",pay:"<<pay<<endl;
}

void main()
{
    //Student stud1(1001,"Li",87.5);
    Graduate grad1(2001,"Wang",98.5,7800);
    //stud1.display();
    grad1.Student::display();
    grad1.Graduate::display();//只能输出派生类中未增加的基类成员

}

利用基类指针或引用——函数名、形参个数、形参类型相同时,有局限性

#include <iostream>
 .  .  .

void main()
{
    Graduate grad1(2001,"Wang",98.5,7800);
    Student *p_Stu;
    p_Stu=&grad1;
    p_Stu->display();//派生类对象地址赋值给指向基类的指针,输出的数据不能使派生类增加的;
    Graduate *p_Gra;
    p_Gra=&grad1;
    p_Gra->display();//派生类对象地址赋值给指向派生类的指针;

}

利用基类指针或引+虚函数——函数名、形参个数、形参类型相同时

#include <iostream>
#include <string>
using namespace std;

class Student
{
public:
    Student(int,string,float);
    virtual void display();//声明display函数为虚函数
protected:
    int num;
    string name;
    float score;
};
class Graduate:public Student
{
public:
    Graduate(int,string,float,float);
    void display();
private:
    float pay;
};

Student::Student(int n,string nam,float s):num(n),name(nam),score(s){};
void Student::display()
{
    cout<<"num:"<<num<<",name:"<<name<<",score:"<<score<<endl;
}
Graduate::Graduate(int n,string nam,float s,float p):Student(n,nam,s),pay(p){};
void Graduate::display()
{
    cout<<"num:"<<num<<",name:"<<name<<",score:"<<score<<",pay:"<<pay<<endl;
}

void main()
{
    Graduate grad1(2001,"Wang",98.5,7800);
    Student *p_Stu;
    p_Stu=&grad1;
    p_Stu->display();
//派生类对象地址赋值给指向基类的指针,派生类增加的数据也输出

    Graduate *p_Gra;
    p_Gra=&grad1;
    p_Gra->display();
}

<指向基类指针与指向派生类指针调用派生类的不同>

#include <iostream>
using namespace std;
class Point
{
public:
    Point()
    {
        cout<<"executing Point contructor"<<endl;
    }
    ~Point()
    {
        cout<<"executing Point destructor"<<endl;
    }
};
class Circle:public Point
{
public:
    Circle()
    {
        cout<<"executing Circle contructor"<<endl;
    }
    ~Circle()
    {
        cout<<"executing Circle destructor"<<endl;
    }
};

void main()
{
    Point *p=new Circle;
    delete p;
    cout<<endl;
    Circle *c=new Circle;
    delete c;
}

结果:

【虚析构函数】

.  .  .  

virtual ~Point()
    {
        cout<<"executing Point destructor"<<endl;
    }

.  .  .

结果:

<流文件中:peek函数+putback函数+get函数+ignore函数>

#include <iostream>
using namespace std;
void main()
{
    char c[50],k;
    cout<<"please enter a sentence:";
    cin.get(c,50,'/');                                             //取49(50-1)个字符给字符数组c[50],遇到'/'时停止
    cout<<"The first part is:"<<c<<endl;         //可以使用"cout<<c"输出字符数组中的元素;

    k=cin.peek();                                                 //将字符指针指向的下一个字符取出给k,并且字符指针的位置不移动
    cout<<"The next character is:"<<k<<endl;
    cin.putback('W');                                          //将'W'插入到下一个cin.get流中
    cin.ignore();                                                   //忽略一个字符
    cin.get(c,50,'*');                                             //继续在终端生取字符,关键是在putback()和ignore()函数之后
    cout<<"The second part is:"<<c<<endl;
}

结果:

#include <iostream>
using namespace std;
void main()
{
    char c[50],k;
    cout<<"please enter a sentence:";
    cin.get(c,50,'/');
    cout<<"The first part is:"<<c<<endl;
    k=cin.peek();
    cout<<"The next character is:"<<k<<endl;
    cin.ignore();
    cin.putback('W');

    cin.get(c,50,'*');
    cout<<"The second part is:"<<c<<endl;
}

结果:

<文件流的操作>

#include <fstream>
#include <iostream>
#include <string>
using namespace std;
void main()
{
    ofstream outfile("../data1.dat",ios::out);   //注意用双引号,相对路径为“../data.dat”
    string str
    if(!outfile)
    {
        cerr<<"open failed!"<<endl;
        exit(1);
    }
    cout<<"enter a sentence:";
    cin>>str;
    outfile<<str;                                                  //输出到文件,string类型遇空格则停止读入
    outfile.close();
}

【输入带空格的字符串
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
void main()
{
    ofstream outfile("../data1.dat",ios::out);   //注意用双引号,相对路径为“../data.dat”
    char ch[100];
    if(!outfile)
    {
        cerr<<"open failed!"<<endl;
        exit(1);
    }
    cout<<"enter a sentence:";
    outfile<<gets(ch);                                       //输出到文件,可以读入空格,直到回车送入缓冲区
    outfile.close();
}

<二进制文件读写操作与seekp函数与seekg函数>

#include <fstream>
#include <iostream>
using namespace std;

struct student
{
    int num;
    char name[20];
    float score;
};

void main()
{
    student stud[5]={1001,"Li",85,1002,"Wu",97.5,1003,"Wang",54,1004,"Tan",76.5,1005,"Ling",96};
    int index;
    fstream iofile("stud.dat",ios::in|ios::out|ios::binary);                  //由于涉及到文件的读取和写入操作,所以
    if(!iofile)
    {
        cerr<<"open failed!"<<endl;
        exit(1);
    }
    for(int i=0;i<5;i++)
        iofile.write((char *)&stud[i],sizeof(stud[i]));
    
    /*输出指定成员信息*/
    student cc;
    cout<<"the date index to be read:";
    cin>>index;
    iofile.seekg(index*sizeof(stud[0]),ios::beg);                                 //将读文件指针定位到将要读的字符处
    iofile.read((char *)&cc,sizeof(cc));                                                //二进制文件读操作
    cout<<cc.num<<" "<<cc.name<<" "<<cc.score<<endl;
    
    /*修改成员数据*/
    stud[2].num=2012;
    strcpy(stud[2].name,"Xu");
    stud[2].score=100;
    iofile.seekp(2*sizeof(stud[0]),ios::beg);                                        //将写文件指针定位到将要修改的字符处
    iofile.write((char *)&stud[2],sizeof(stud[2]));                               //二进制文件写操作
    
    /*输出修改过后的所有成员数据*/

    iofile.seekg(0,ios::beg);                                                                //恢复读文件指针的位置,以便read输出所有成员信息
    for(int i=0;i<5;i++)
    {
        iofile.read((char *)&stud[i],sizeof(stud[i]));
        cout<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].score<<endl;
    }
    iofile.close();
}

<字符串流的使用>

#include <strstream>
#include <iostream>
using namespace std;

void main()
{
    char ch[50]="12 34 65 -23 -32 33 61 99 321 32";//字符数组的赋值
    int a[10],i,j,temp;
    istrstream strin(ch,sizeof(ch));                       //将数组ch字符与字符串输入流关联
    cout<<"ch:"<<ch;
    for(i=0;i<10;i++)
        strin>>a[i];
    cout<<endl;
    cout<<"a:";
    for(i=0;i<10;i++)
    {
        cout<<a[i]<<" ";
    }
    for(i=0;i<10;i++)
    {
        for(j=i+1;j<10;j++)
        {
            if(a[j]>a[i])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    ostrstream strout(ch,sizeof(a));                       //将数组ch字符与字符串输出流关联
    for(i=0;i<10;i++)
        strout<<a[i]<<" ";
        cout<<endl;
    cout<<"order ch:"<<ch<<endl;
    system("pause");
}

2019-02-25 20:53:02 xianzhe6954 阅读数 89
  • C语言/C++学习指南》语法篇(从入门到精通)

    一门初级、从入门到精通的C语言C++语法教程,由毕业于清华大学的业内人士执课。从简单的HelloWorld入门程序,到深入的C语言C++核心概念,均为您娓娓道来,言之必详、听之必懂。让C语言C++编程变得简单,让C语言C++编程变得有趣,让喜欢C语言C++的人学会C语言C++!

    161920 人正在学习 去看看 邵发

哦我的老朋友为什么我的学校我的专业我这一届只学习C而不是C++?

#include <iostream>
using namespace std;

1.标准模板库(STL),提供了大量的方法,用于操作数据结构等。就是这么方便

2.面向对象
对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。
类 - 类可以定义为描述对象行为/状态的模板/蓝图。
方法 - 从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。
即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。

3.多了的数据类型
宽字符型 wchar_t
其实
typedef wchar_t short int;
所以 wchar_t 实际上的空间是和 short int 一样。

4.endl即为反杠n

5.typedef type newname
比如 typedef int gouzi
那么可以说 gouzi jizhi 来定义jizhi这个int型变量

6.枚举类型enum
形如
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],

标识符[=整型常数]
} 枚举变量;

一个变量仅有几种可能的值时,可以定义为枚举类型。eg:

enum dog {ala,gold,chai} gouzi;
    gouzi=ala;

需要注意的特例:

enum color { red, green=5, blue };

在这里,blue 的值为 6,因为默认情况下,每个名称都会比它前面一个名称大 1,但 red 的值依然为 0。

7.变量也好函数也好,声明的时候可以提供个名字,然而实际定义却可以在任何地方进行。

8.变量的作用域三类,但在函数中的同名局部变量在被实际定义赋值时会把前面赋值的全局变量覆盖掉。

注意正确地覆盖和初始化变量!

9.int型数实例

85         // 十进制
0213       // 八进制 
0x4b       // 十六进制 
30         // 整数 
30u        // 无符号整数 
30l        // 长整数 
30ul       // 无符号长整数

float实例

3.14159       // 合法的 
314159E-5L    // 合法的 
510E          // 非法的:不完整的指数
210f          // 非法的:没有小数或指数
.e55          // 非法的:缺少整数或分数

10.宏定义(预处理器)#define

#define identifier value
例如 #define MONTH 30

程序内使用const也可以有类似效果
const type variable = value;
例如 const int MONTH=30;
此处MONTH为变量

11.C++ 修饰符类型四种

  1. signed
  2. unsigned
  3. long
  4. short

12.类型限定符
在这里插入图片描述
13.存储类

1)auto 关键字用于声明变量时根据初始化表达式自动推断该变量的类型
2)register 存储类用于定义存储在寄存器中而不是 RAM
中的局部变量。
3)extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。
4)mutable 说明符仅适用于类的对象
5)使用 thread_local 说明符声明的变量仅可在它在其上创建的线程上访问。

14.运算符
位运算符
& | ^ 与 或 异或 >>右移
优先级顺序(转自runnoob)
在这里插入图片描述
15.? : 运算符:? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。

Exp1 ? Exp2 : Exp3;
没有更多推荐了,返回首页