C++阶段小结
一, 输入输出函数标准输出函数cout,其语句的一般格式为Cout<<表达式;Cout<<表达式<<endl;(endl为换行符相当于‘\n’)Cout<<表达式1<<表达式2<<……<<表达式n;同理标准输入函数cin其语法格式为Cin>>表达式1>>表达式2>>表达式n>>endl;C++的标准输入输出于C语言来说比较方便,不需要输入输出格式说明只要用到标准输入输出函数就必须调用库函数输入输出流库<iostream>和域名空间using namespace std.二、字符串变量C++中多了一种字符串类型的变量(string),定义格式为string s;可以直接进行字符串变量的加比较。例如,string s1=“你好”;string s2=“世界”;s1+s2=“你好世界”,表达式s1>s2如果正确返回1,否则返回0.使用string变量同样需要调用流库<iostream>和域名空间using namespace std.三、引用Int &b=a;这里就是一个引用,相当于给变量a引用一个新的名字b,b不会再内存开辟空间,这个时候a和b完全等价,指同一块内存变量,操作a就相当于操作b。引用主要用于传递函数的参数和返回值,例如:Void change1(int &r){r=100;}Void change2(int *p){*p=1000;}void main(){Int a=1;change1(a);cout<<a<<endl;change2(&a);cout<<a<<endl;}结果输出100,1000.可见引用传递和指针传递都可以改变参数的值。引用的使用需要注意以下几点:1. 引用必须在声明时立即初始化,不允许空引用;2. 引用一旦初始化,就不能再更改,不能再引用其他数据;3. 引用和被引用的变量实际上代表同一个内存的数据。四、类类是具有相同属性和行为的一组对象的集合,主要包括属性和行为两个部分。类类型是C++中最主要的数据结构类型。声明一个类类型class student{public;//访问权限修饰符int num;//声明成员变量char 易做图;char name[20];//声明成员函数void display();}Void student::display(){}//成员函数声明后必须要定义,可以在成员函数声明时就定义,也可以在类类型声明外面定义,在外面定义格式为 函数返回值+类类型+双冒号+函数名+函数参数定义一个对象: 类型名 对象名(构造函数参数)//构造函数的参数默认为空对象只保存成员变量,存储在栈中,函数在代码区。访问对象的成员变量的方法:对象.成员对象.成员函数(实参列表)对象的指针->成员变量对象的指针->成员函数名(实参列表)对象的引用.成员变量对象的引用.成员函数(实参列表)类名::静态成员变量名类名::静态成员函数名(实参列表)五.成员函数重载成员函数的名字一样但是成员函数参数不同包括参数的类型、个数、顺序不一样的现象叫做成员函数重载。成员函数的重载与函数的返回值无关。判断两个成员函数是否重载的最总取决于将同样的参数放在函数名一样的成员函数中看是否出现歧义,若没有歧义则是同一函数,若有歧义则是成员函数重载。六、构造函数构造函数是一种特殊的成员函数:1, 构造函数的名字必须要与类名相同2, 它不具有任何类型,不返回任何值3, 构造函数的功能是由用户定义的4, 构造函数可以重载5, 构造函数在生成对象时就执行构造函数的声明格式为:类名();类名(形参列表)关于构造函数一些总结1. 如果一个类中没有自定义构造函数,那系统会默认生成一个public修饰的无参数空实现的构造函数2. 当自定义了构造函数,则默认的无参数的构造函数就不存在了3. 创建对象的时候会调用类中其中的一个构造函数4. 构造函数可以重载,创建对象时具体调用哪一个构造函数由传参数来确定5. 构造函数的作用主要用于初始化正在创建的对象七、成员变量的初始化采用构造函数初始化成员变量例如Stu:Stu(int age,string name){this->age=age;this->name=name;//构造函数中的this指正在穿件的对象的地址}采用初始化表为对象的成员变量赋值例如Stu::Stu(int xage,string xname):age(xage),name(xname){}八、析构函数析构函数名字是类名的前面加一个“~”符号。没有参数,并且不能够重载。当对象的生命期结束时,会自动执行析构函数。析构函数一般用于完成“清理”的工作,如果用户没有自定义析构函数,C++编译系统会自动生成一个析构函数,但它什么操作都不进行。想让析构函数完成任何工作时,都必须要自定义析构函数。构造函数和析构函数按照栈中先进后出的顺序九、对象数组数组不仅可以由简单的变量组成,也可以由对象组成(对象数组的每一个元素都是同类的对象)1. 调用可以不传参数的构造函数创建对象数组Student stud[50];2. 调用可以只传一个参数的构造函数有两种方法创建对象数组Student stu[3]={60,70,80};或者Student stu[3]={Student(60),Student(70),Student(80)};3. 调用可以传多个(这里举例3个)参数的构造函数创建对象数组Student stu[3]={Student(1001,1,10),Student(1002,2,11),Student(1003,3,12)};不能够直接Student stu[3]={(1001,1,10),(1002,2,11),(1003,3,12)};这样的话只是把每个括号里最后一个参数传给了构造函数参数列表中的第一个参数,其他的参数并没有传到十、指针指向对象成员变量的指针定义 数据类型名 *指针变量名;成员变量值的形式:&成员变量指针指向成员函数的指针定义指向成员函数的指针变量的形式1. 无参数成员函数成员函数返回类型 (类名::指针变量名)();2. 有参数成员函数成员函数返回类型 (类名::指针变量名)(参数列表);成员函数指针变量值的形式:&类名::成员函数名;成员函数指针变量使用形式:(对象.*指针变量名)(实参);指向对象的常指针和指向常对象的指针类名 *const 指针变量名;(常指针)禁止改变指针,指针是不变的const 类名 *指针变量名;(常对象指针)禁止改变所指向的对象,对象时不变的例如:void f1() {A a1;A a2;A * const p = &a1;//p = &a2;//错,常指针不可改变p->x = 23;}void f2() {A a1;A a2;const A *p;p = &a1;//指针可以改变//p->x = 23;错,常对象指针指向的对象中的内容不可以改变p = &a2;}void f3() {A a1;A a2;const A * const p = &a1;//常对象常指针,指针和对象均不可改变//p = &a2; 错//p->x = 34; 错}十一、常成员变量和常成员函数以及常对象常成员变量时用关键字const来修饰声明的成员变量,const位于变量前或者类型前都一样。例如class Time{public:const int hour;int const minute;}1. 常成员变量只能通过构造函数的初始化表对常成员变量进行初始化;例如.class A {public://常成员变量const int x;const int y;int z;A(int x, int y);A(int x, int y, int z);};A::A(int x, int y): x(x),y(y) {}A::A(int x, int y, int z): x(x),y(y) {this->z = z;}2. 常成员变量所在类中所有的构造函数都必须通过初始化表对常成员进行初始化;3. 常成员变量可以向普通的成员变量一样进行访问,但是其值是不能被修改的。4. 必须在构造函数初始化,不然为随机数没有意义常成员函数:用const修饰的成员函数,const位于函数括号之后,定义和声明的地方都要加上const。例如class Time{public:void show()const;}常成员函数可以用this访问成员变量,但是不能修改this访问的成员变量。(包括常成补充:软件开发 , C++ ,
上一个:二叉查找树C++实现
下一个:文件读取,成绩计算,小综合C语音习题
- 更多C/C++疑问解答:
- 关于c++的cout输出的问题。
- 在学校里学过C和C++,不过学的很一般,现在自学C#,会不会很难?
- 全国计算机二级C语言笔试题
- 已知某树有2个2度结点,3个3度结点,4个4度结点,问有几个叶子结点?
- c++数据结构内部排序问题,整数排序
- 2012九月计算机二级C语言全国题库,,急求急求
- 如果assert只有一个字符串作为参数,是什么意思呢?
- C语言中,哪些运算符具有左结合性,哪些具有右结合性,帮忙总结下,谢谢了!
- 为什么用结构体编写的程序输入是,0输不出来啊~~~
- 将IEEE—754的十六进制转化为十进制浮点类型,用C或C++都行,多谢各位大侠啊,非常感谢!
- 为什么这个程序求不出公式?
- 这个链表倒置的算法请大家分析下
- c语言函数库调用
- C语言unsigned int纠错
- C语言快排求解啊