首页 > 代码库 > 第三十天: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++基础