首页 > 代码库 > 第三十天:C++基础

第三十天:C++基础

  又是一门新语言。课程安排几个编程语言都是有目的性的,比如学习shell是为了查看配置文件的方便,学习汇编是为了更加了解C编译过程中符号的使用。这次学习C++就是为学习Qt打基础的。

  今天的课程重点是讲解C++和C语言的区别,从输出helloworld开始。

1  #include<iostream>2   2 using namespace std;3   3 4   4 int main()5   5 {6   6         cout << "hello world !"<< endl;7   7         8   8 }

   C++使用输入输出流,包含头文件<iostream>注意这里不加.h  。 std 是一个命名空间,不同的命名空间可以有相同的类名被定义 ..
  using namespace std;就是指明下面的程序使用std,如果不用这句指明的话就要用std::string(string是std空间中定义的也可以在全局空间中定义,只要名字空间不一样即可.否则可以默认名字空间中有std.便不用std::来修饰 它是C++新标准中有的,解决多人作编大程序时名字冲突问题。比如A B两个班都有叫张三的人,你要使用A班的张三,必然要先指名是A班这个名字空间(namespace),然后你对张三的所有命令才能达到你的预想,不会叫错人.(摘自百度知道)

  endl表示换行。

  第二个代码是C++中内存分配和释放。

 1 #include<iostream> 2  3 using namespace std; 4  5 int main() 6 { 7     int *p = new int[5]; 8     p[1] = 9; 9     cout << p[1] << endl; 10     delete [] p;11 12 }

 

  和C相比较,new和malloc( )对应,delete 和 free()对应。共同点是都是在堆中分配内存,不同的是malloc()和free()是C库函数,new和delete是c++关键字。

  第三个代码是引用的介绍:

 1  #include<iostream> 2   2 using namespace std; 3   3 int hello(int &p); 4   4  5   5 int main() 6   6 { 7   7         int a = 10; 8   8         hello(a); 9   9         cout << a<< endl;10  10 11  11 }12  12 int hello(int &p){13  13 14  14         p = 1000;15  15 16  16 }

 

  引用是为原来的变量起别名,它和指针的区别是,指针是新分配一段内存空间,而引用为分配空间。定义指针时候可以不要初始化,而引用必须初始化。

  第四个代码是C++中类的介绍:

 1 #include<iostream> 2   2 using namespace std; 3   3  4   4 class person{ 5   5 public: 6   6         void show(int ); 7   7         int age; 8   8 private: 9   9         int money;//成员函数用10  10 };11  11 void person::show(int m){12  12         money = m;13  13         cout << money << endl;14  14 }15  15 16  16 int main()17  17 {18  18         person tom;19  19         tom.age = 21;20  20         tom.show(100);//对象只能访问类共有成员21  21 //      tom.money = 1000;//error//私有的对象不能用22  22 23  23 24  24 }

 

  class 和 struct 只有一点不相同。struct默认成员是共有的,class默认成员是私有的。

第五个函数是C函数,为了引出this指针:

 1 #include<stdlib.h> 2 #include<stdio.h> 3  4 struct person{ 5     int age; 6     void (*init_person)(struct person *t); 7     void (*exit_person)(struct person *t); 8     void (*show)(struct person *t); 9 10 };11 void my_init_person(struct person *t);12 void my_exit_person(struct person *t);13 void my_show(struct person *t);14 int main()15 {16     struct person tom;17     tom.init_person = my_init_person;18     tom.exit_person = my_exit_person;19     tom.age = 10;20     tom.show = my_show;21     tom.init_person();    22     tom.show(&tom);23     tom.exit_person();    24     25 26 }27 void my_show(struct person *t)28 {29     printf("%d\n",t.age);30 }31 void my_init_person(struct person *t)32 {33 }34 void my_exit_person(struct person *t)35 {36 37 }

 

   C++代码和C代码是可以互相转换的,为了在show函数中使用person中的age,特地定义重新定义一个指向person的结构体指针。在C++中被称为this指针。而且每个类的成员函数的第一个参数默认就是this指针。

第六个函数是对析构函数和构造函数的介绍:

 1 #include<iostream> 2 #include<stdio.h> 3  4 using namespace std; 5  6 class person{ 7 public: 8     person(int ,int); 9     person(person &p);10     ~person();11     void show();12     int age;13 private: 14     int money;//成员函数用15 };16 person :: person(int age ,int money)  17 {18     cout << "person"<< endl;19     this->age = age;20     this->money = money;21 }22 person :: person(person &p)  23 {24     this->age = p.age;25     this->money = p.money;26 }27 person :: ~person()28 {29     cout << "~person"<< endl;30 }31 void person::show(){32     cout << "this->age is " << this->age << "\tthis->money is " << this->money << endl;33 }34 int main()35 {36     person tom(20,40);37     person jim(tom);38     tom.show();//对象只能访问类共有成员39     jim.show();40 //    tom.money = 1000;//error//私有的对象不能用41 42     43 }

 

  注意的是:析构函数不能有参数和返回值(默认有this指针),构造函数可以有参数不能有返回值。

第七个函数是继承的使用:

 1 #include <iostream> 2 using namespace std; 3  4 class person{ 5 public: 6     int age; 7 protected: 8     int money; 9 private:10     int lover;11 };12 class man : public person{13 public:14     void show();15     int len;16 private:17     int game;18 };19 void man :: show()20 {21     money = 100;22     age = 10;23     cout <<"age is " << age << endl; 24     cout <<"money is " << money << endl; 25 }26 int main()27 {28     man tom;29     tom.age = 10;30     tom.show();31 }

 

  上面代码中,man属于共有继承,就继承了person的共有成员。

 

第三十天:C++基础