每日C++_1116

内联:
一些简单的函数调用时间可能只用几毫秒,但是压栈出栈时间远比函数调用时间长,为了节约时间
1系统尝试将调动该函数动作替换为函数本体,以提升性能。
函数定义前增加了关键字inline
2只是开发者对编译器的一个建议,编译器做不做取决于编译器的诊断功能
3内联函数定义要放头文件。这样用这个内联函数的文件都能通过#include吧这个源代码放进来。

1内联函数尽量要小

const int &d = 100;
函数中带const可以防止传参被修改,只是引用
void func(const int &a)
{
}
func(111);

类:
构造函数前一定要加public:因为创建对象时,系统要调用,而且类缺省的成员是私有,影响系统调用
类可有多构造函数
强制系统不做隐式转换,加explicit关键字,一般单参数构造函数
int fun::sv = 10;
class fun
{
public:
    explicit fun(int a);
    static int sv;
}
const类成员函数:
类成员函数后+const,不允许改变类成员中任何变量的值
定义constd对象,例如 const fun xx;
不能调用能修改成员变量值的成员函数(不带const的成员函数都不能调用)
总结:const成员函数 不管是const对象,还是普通对象,都可以调用const成员函数
非const成员函数,只能被普通对象调用,不能被const对象调用。

mutable 不稳定,易改变
用mutable修饰成员变量,则在哪里都能修改,在后缀const中也可以改变。

this 指针
只能在成员函数中使用,全局函数静态函数中不可使用
在普通成员函数中,this是一个指向非const对象的const指针(类型为fun,那this为fun *const this类型指针)
在const成员函数中,this指针是一个指向const对象的const指针(类型为fun,this 就是 const fun *const this类型指针)

静态成员变量


有属于整个类的成员变量,这种成员变量就叫static成员变量
特点:不属于某个对象,属于整个类,我们一旦在某个对象中修改了这个成员变量的值,在其他对象中能直接看到修改的结果
这种成员变量只有一个副本,引用时是类名::成员变量名
成员函数前可加static构成静态成员函数,调用时,类名::成员函数名
如何定义静态成员变量,一般会在cpp文件开头定义,这样可以保证调用前被初始化
int fun::sv = 10;//类后置声明也行

=default; 编译器能够为我们自动生成函数体,偷懒{}
类中的构造函数直接=default;
=delete; 显式禁用掉了某个函数

operator
operator关键字+运算符

父类指针,子类指针
父类指针可以指向子类,子类不能指向父类;
new子类对象,但是父类指针不能调用子类成员函数
override,主要目的是编译器帮助纠错,所以默认写在虚函数后面

纯虚函数
没有函数体,只有函数声明 virtual void eat() = 0;
一旦类中存在纯虚函数,那么不能生成这个类的对象,这个类成为了抽象类
抽象类,不能用来生成对象,用来统一管理子类
1子类中必须要实现父类中定义的纯虚函数
父类中的析构函数一般写成虚函数(一定)否则会出问题
父类new一个子类,delete的时候,会忽略子类的析构函数,所以必须要父类析构写虚函数

猜你喜欢

转载自blog.csdn.net/qq_35337794/article/details/121363263