第三十天: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的共有成员。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。