C/C++ 知识回顾 面向对象
2017-02-25 20:49
267 查看
1.C++中空类默认产生:构造函数 析构函数 拷贝构造函数和赋值函数
2.struct和class唯一的不同就是:struct的变量默认是public而class的变量默认是private
3.静态成员变量需要显式地赋予初值,如果静态成员变量设置为私有,可以通过公共静态成员函数来访问。
4.初始化列表的初始化顺序是根据成员变量的声明顺序来初始化的
5.const常量必须在构造函数的初始化列表里面初始化,或者将其设置为static
6.CBase p;
CChild c;
p=&c;当销毁p时,会调用CBase的析构函数,如果Cbase的析构函数不是虚函数,则不会调用CChild的析构函数,造成内存浪费。所以MFC类库中,CObject类的析构函数为虚函数。
7.为什么构造函数不能为虚函数。
虚调用允许在不知道具体对象的情况下对函数进行调用。但是构造函数必须要知道对象的准确类型,所以构造函数不能为虚。
8.每一个虚函数的对象都必须维护一个v表,使用虚函数会有系统开销。因此,虚函数不能下机吧用。
9.析构函数可以是内联函数。
10.单个参数的构造函数如果不添加explicit关键字,会定义一个隐含的类型转换。
11.const变量不能随意转化为非const变量
12.覆盖的虚函数必须返回与父类的同名函数一致的类型。
13.析构函数不应该抛出异常
2.struct和class唯一的不同就是:struct的变量默认是public而class的变量默认是private
3.静态成员变量需要显式地赋予初值,如果静态成员变量设置为私有,可以通过公共静态成员函数来访问。
4.初始化列表的初始化顺序是根据成员变量的声明顺序来初始化的
5.const常量必须在构造函数的初始化列表里面初始化,或者将其设置为static
6.CBase p;
CChild c;
p=&c;当销毁p时,会调用CBase的析构函数,如果Cbase的析构函数不是虚函数,则不会调用CChild的析构函数,造成内存浪费。所以MFC类库中,CObject类的析构函数为虚函数。
7.为什么构造函数不能为虚函数。
虚调用允许在不知道具体对象的情况下对函数进行调用。但是构造函数必须要知道对象的准确类型,所以构造函数不能为虚。
8.每一个虚函数的对象都必须维护一个v表,使用虚函数会有系统开销。因此,虚函数不能下机吧用。
9.析构函数可以是内联函数。
10.单个参数的构造函数如果不添加explicit关键字,会定义一个隐含的类型转换。
11.const变量不能随意转化为非const变量
12.覆盖的虚函数必须返回与父类的同名函数一致的类型。
13.析构函数不应该抛出异常
相关文章推荐
- 通过例子回顾C++基本知识(二)
- C++基础知识回顾
- C++ 基础知识回顾(string基础、智能指针、迭代器、容器类)
- c++面向对象三大特征封装、继承和多态知识总结
- C/C++基础知识03---面向对象---类(Classes)
- C/C++一些知识3(面向对象)
- C++ 基础知识回顾
- C++基础知识总结与回顾--5.5共享数据的保护
- C++回顾(一)——基本知识
- C++ Prime 简单回顾-基础知识
- C++重点知识回顾
- C++基础知识回顾
- 回顾JavaScript基础知识小结2-面向对象(介绍)
- c++相关知识回顾
- C++基础知识(三) 面向对象
- 回顾C++面向对象的程序设计
- 回顾JavaScript基础知识小结2-面向对象之接口
- C++ ”类“ 知识的回顾
- 【C++】知识回顾1
- CPP.Freshman Vol.1 C++基础知识回顾