• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++杂记

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.我们必须在调用一个函数之前就高数电脑这个函数已经存在了,否则就成了“马后炮”。所以,我们一般把函数的声明放在主函数的前面。

2.reference。
变量数据类型 &引用名=已声明的变量名。
int a;
int &b=a;//变量a的引用b,对b的操作就是对a的操作。
对象也可以有引用: 类名 &对象名a = 对象名b;

#include "iostream.h"
void main()
{
    int a=2;
    int &b=a;//给变量a起了个绰号叫b
    cout <<"a=" <<a <<endl;
    cout <<"b=" <<b <<endl;
    a++;
    cout <<"a=" <<a <<endl;
    cout <<"b=" <<b <<endl;
    b++;//对b的操作也就是对a的操作,所以b++就相当于a++
    cout <<"a=" <<a <<endl;
    cout <<"b=" <<b <<endl;
}
函数参数里的 引用参数
#include "iostream.h"
void swap(int &x,int &y);
void main()
{
    int a=2,b=3;
    swap(a,b);
    cout <<"a=" <<a <<endl;
    cout <<"b=" <<b <<endl;
}
void swap(int &x,int &y)
{
    int temp;
    temp=x;
    x=y;
    y=temp;
}
a,b交换

#include "iostream.h"
void swap(int x,int y);
void main()
{
    int a=2,b=3;
    swap(a,b);
    cout <<"a=" <<a <<endl;
    cout <<"b=" <<b <<endl;
}
void swap(int x,int y)
{
    int temp;
    temp=x;
    x=y;
    y=temp;
}
a,b没有交换

3.直接或间接的在函数体内调用函数本身的现象称为函数的递归。

4.指针存储的是值的地址。是一个变量。
当我们要声明多个指针变量时,必须在每个指针变量名前加上*
int *p1,*p2,p3 //p1,p2都是指向整型变量的指针变量,而P3是整型变量。
空指针,int* p1 =NULL; //c++大小写敏感,NULL与null是不同的。
*,解引用操作符,获取指针所指向的变量或存储空间。
#include "iostream.h"
void main()
{
    int i=3;
    int *iptr=&i;
    int **iptrptr=&iptr; //iptr也是变量,也能够获取它的地址。
    cout <<"Address of Var i=" <<iptr <<endl;//输出iptr存储的内容,即i在内存中的地址。
    cout <<"Data of Var i=" <<*iptr <<endl;//输出iptr所指向的变量
    cout <<"Address of Pointer iptr=" <<iptrptr <<endl;//输出iptr在内存中的地址
    cout <<"Address of Var i=" <<*iptrptr <<endl;//输出iptr所指向的变量,即iptr
    *iptr=2+*iptr;
    cout <<"Data of Var i=" <<*iptr <<endl;
}

只能够读出内存中的数据,却不能修改内存中的数据。即指向常量的指针,简称常量指针。
const int* iptr //能够通过指针iptr读出内存里的数据,但是不能对其写入,修改。

指针常量和常量指针不同,指针常量是指所指向的位置不能改变,即指针本身是一个常量。但是指针常量可以通过简介引用修改内存中的数据
#include "iostream.h"
void main()
{
    int a=42;
    const int b=84;
    const int *captr=&a;//常量指针
    int * const acptr=&a;//指针常量
    int *bptr=&b;//错误,不能把常量的地址给指针变量
    const int *cbprt=&b;//把常量的地址给常量指针是允许的
    *captr=68;//错误,间接引用常量指针不可修改内存中的数据
    *acptr=68;//间接引用指针常量可以修改内存中的数据
    captr=&b;//常量指针可以指向其他变量
    acptr=&b;//错误,指针常量不能指向别的变量
    const int * const ccaptr=&a;//常量指针常量,既不能间接引用修改数据,也不能指向别的变量或常量
    *ccaptr=68;//错误,不能间接引用修改数据
    ccaptr=&b;//错误,不能指向别的常量或变量
}

5.枚举,允许用户自定义一种类型,并且列出该数据类型的取值范围。
enum 类型名{常量};
在定义一个枚举类型时,不能有2个相同的枚举常量。
在定义二个不同的枚举类型时,不能有2个相同枚举常量。

6.头文件的使用主要在2个方面,一个是重用(多次使用),另一个是公用。

7.#include <..> 包含C++提供的头文件。
  #include ".." 无论这个文件是C++提供的还是自己编写的,一定是正确的。

8.程序的编译和连接统称为编译阶段,程序的运行和测试统称为运行阶段。
在编译阶段发生的错误称为编译错误,在运行阶段发生的错误称为运行时错误。
对于编译错误,通过检查并修正语法错误来解决;对于运行时错误,通过检查并修正语意(程序设计思想)错误来解决。

9.静态成员函数也是属于一个类而不属于某一个具体的对象。
static 返回值类型 函数名(参数表);
在定义静态成员函数时,不能出现static。
静态成员函数的调用:
(1)类名::静态成员函数名(参数表);
(2)对象名.静态成员函数名(参数表); (只能访问静态成员数据)

10.父类的成员对象是最先构造的,接着在运行父类的构造函数,最后在运行子类的构造函数。
如果想吧子类的构造函数的参数传递给父类的构造函数时,可以在子类的构造函数定义中调用父类的构造函数:
子类名::构造函数名(参数表):父类名(参数表)
继承后,析构函数的运行顺序恰好与构造函数的运行顺序相反。

11.在公有继承情况下父类的对象指针指向子类对象是可以的。但是这样做了后,这个指针无法使用子类中扩展出的成员。

12.设置虚函数:在成员函数的声明最前面加上保留字virtual。特别注意,不能吧virtual加到成员函数的定义之前,否着会导致编译失败。

13.虚函数与虚析构函数的作用是不同的,虚函数是为了实现多台,而虚析构函数是为了同时运行父类和子类的析构函数,使资源得以释放。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
STL-容器库101--array【C11】发布时间:2022-07-14
下一篇:
逐步认识C#四种判断相等的方法转载发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap