1.友元
1)全局函数
2)类
3)成员函数做友元
关键字:friend
主要功能;为了让外部函数可以直接使用私有变量
https://blog.csdn.net/weixin_46098577/article/details/116596183
2.野指针
野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)指针变量在定义时如果未初始化,其值是随机的,指针变量的值是别的变量的地址,意味着指针指向了一个地址是不确定的变量,此时去解引用就是去访问了一个不确定的地址,所以结果是不可知的。
指针变量未初始化
指针变量释放后没有置为NULL
超出变量作用域
https://blog.csdn.net/lxw907304340/article/details/49759251
3.函数参数传递方式
值传递、地址传递(引用传递、指针传递)
4.浅拷贝和深拷贝
浅拷贝:一个人,之前叫张三,现在叫李四,还是那个人
深拷贝:一个人,叫张三,克隆了新的一具肉体出来,叫李四
5.构造函数和析构函数重载
构造函数可以,析构不可以
构造函数可以被重载,因为构造函数可以有多个且可以带参数。
析构函数不可以被重载,因为析构函数只能有一个,且不能带参数。
构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建对象时, 对象会自动调用它的构造函数。一般来说,
构造函数有以下三个方面的作用:1、给创建的对象建立一个标识符;
2、为对象数据成员开辟内存空间;
3、完成对象数据成员的初始化。
6.
这个最后删除的是父类对象,不会调用子类析构函数
7.类的大小
这个是16.。。
https://blog.csdn.net/fengxinlinux/article/details/72836199
8.静态成员变量和静态成员函数
静态成员函数类外定义不能加static前缀https://blog.csdn.net/wcybrain/article/details/79048052?ops_request_misc=&request_id=&biz_id=102&utm_term=%E9%9D%99%E6%80%81%E6%88%90%E5%91%98%E5%87%BD%E6%95%B0%E7%B1%BB%E5%A4%96%E5%AE%9A%E4%B9%89&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-7-79048052.142v46pc_ran_alice&spm=1018.2226.3001.4187
静态成员变量可以在建立对象前就初始化:
静态成员变量的初始化是在类外进行的,和建立对象与否没有关系;
静态成员函数中不可以使用this指针:
静态成员函数并不是针对某个类的实例对象,而是属于整个类的,为所有的对象实例所共有。他在作用域的范围内是全局的,独立于类的对象之外的。他只对类内部的静态成员变量做操作。当实例化一个类的对象时候,里面不存在静态成员的。this指针是相当于一个类的实例的指针,this是用来操作对象实例的内容的,既然静态成员函数和变量都是独立于类的实例对象之外的,他就不能用this指针。也不能操作非静态成员。再有你要想想设计静态成员的用意在哪里,就会更加明了了。
https://www.runoob.com/cplusplus/cpp-class-access-modifiers.html
默认构造函数、默认拷贝构造函数、默认析构函数、默认赋值运算符
class Empty
{
public:
Empty();// 缺省构造函数
Empty(const Empty&);// 拷贝构造函数
~Empty();// 析构函数
Empty& operator=(const Empty& ); // 赋值运算符
Empty* operator&();// 取址运算符
const Empty* operator&() const;// 取址运算符 const
};
https://blog.csdn.net/xsydalao/article/details/93623647
静态存储、堆、栈
原来是用public、private等来做权限限制,现在是用关键字friend来进行权限制。
虽然非静态的多了一个指向对象的指针做为参数,但当用类对象调用此函数时,编译器仍分不清调用的是哪个,故不允许重载具有相同参数类型的静态和非静态成员函数 但同名同参的const函数与非const函数则是可以