class中的函数如果没有定义,系统会默认设置,但是一旦定义了则需要写完整,否则会被“undfined reference to ”
函数的位置可以是类定义内,也可是定义外,定义外则要说明范围,如我定义一个
class A{
public:
void geta();
private:
protected:
};
void A::geta(){
}
需要说明geta()函数的范围是在A类中的;
内联函数
在类内定义的函数成为内联函数,系统编译时会直接编译占用一定的时间,通常内容简单。
“内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。”
——百度百科
位置也可在类的定义外,前面加上inline。
类内函数由三类函数组成:构造函数、复制构造函数、析构函数。
构造函数
就是构造并初始化该类的函数。
复制构造函数
在我的理解内是因为类内结构多,所以用新容器(创建一个该类的新)构造一个一模一样的
用到复制构造函数的地方有三个:
1.类的引用
class A{
};
int main(){
A a;
A b=a;
A c(a);
}
两种引用都是可以的,都会调用一次复制构造函数;
2.函数中形参为类
3.函数返回值为类
析构函数
~+类名
就是在主函数结束时把构造函数给拆解了(如其名)。就像让这块作用域上的东西都消失了。
new的使用
1.int *p= new 数据类型();……delete p;
2.int *p=new 数据类型[]();……delete [] p;
括号的有无代表有没有初始化。