成员函数:
在类内部定义的函数默认为inline。也可以在类定义体外部的函数定义上指定inline,但其定义通常应放在有类定义的同一头文件中。
内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。内联函数提高了执行效率。
内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。
类是用struct关键字定义的,则在第一个访问标号之前的成员是公有的;如果类是用class关键字定义的,则这些成员是私有的。
析构函数可以是内联函数。
2、
class Screen;//前向声明
在screen声明之后,定义之前,screen是一个不完全类型,不能定义对象,只能用于定义指向该类型的指针及引用
定义类不会进行存储分配,定义对象时,将为其分配存储空间。
3、为什么类的定义以分号结束?因为定义之后可以接一个对象定义列表。
class Screen {……}s1,s2;
4、单个参数的构造函数如果不添加explicit关键字,会定义一个隐含的类型转换(从参数类型转换到自己);添加explicit关键字会消除这种隐含转换。
class Sales{
public:
explicit Sales(istream &is);
};
item.same_isbn(cin);//error
item.same_isbn(Sales(cin));//ok