(二)函数相关
首先来说c++中将函数的声明以及定义是分开的
例如:
class Demo{
//这里注意的是c++的特有定义方法
public:
//声明函数
void getDemo();
void setDemo();
private:
//声明成员
int i;
int x;
//定义函数方法一:
void getDemo(){
//do things
}
void setDemo(){
//do things
}
}
//定义函数方法二
void Demo::getDemo(){
//do things
}
void Demo::setDemo(){
//do things
}
内联函数
//在c++中 一般来说定义了一个函数后,编译器就会在内存中为其创建一个指令集,当我们调用这个函数时,程序就会跳转到该指令集处.当该
//函数运行完毕后,程序又会返回到原来执行调用该函数的下一行继续执行.加入对该函数执行了上百次调用,那么就要来回跳转上百次,很明显
//这是相当影响程序执行效率的。所以就有了内联函数,即:用关键字inline声明函数。这样编译器将不会创建真正的函数,而只是将这个内联
//函数的所有代码拷贝到调用函数中,这样程序在执行调用该函数时就不需要来回跳转,自然就会提供了程序运行时的效率,但是如果程序调用了
//内联函数一百次,那么就要将该内联函数中的代码复制一百次,无形中增加了程序的体积,所以内联函数大多使用体积比较少的函数中
//当方法的声明与定义在同一行时也为内联函数
//个人看法:虽然内联函数减少了编译器的跳转次数,但是对于copy函数来说也无形中的增加了电脑cpu的负载(cpu的运行原理就不说了,不知
//道的自己找些资料吧),所以总体来说可能是c++语言的编译器本身设计不合理,当然我只是随便评论,毕竟做c++语言是群很牛的人这样做或许
//有着不为人知的道理?欢迎大家纠正我的观点 来尽情的喷我吧^_^!
//如果是在当前类里 c++是不需要加 public等权限修饰符的
inline int print();
int print(){
return 1;
}
const成员函数
//如果你不想让某个成员函数修改成员变量的值,那么不妨将这个成员函数声明为const,相当于java中的final
class A{
public :
void func(int x,int y){i=x;j=y}
//const的使用,通常放在()的后面,{}的前面
void print()const{cout<<"两数相乘为:"<<i*j<<endl;}
private :
int i;
int j;
}
//对于不应当改变对象的成员函数都应该声明为const,这样假如该成员函数试图去修改该对象的成员变量,编译器会提示错误,从而达到
//帮助你查错的目的。
int main(){
A a;
a.func(1,2);
a.print();
A b;
b.func(3,4);
b.print();
return 0;
}
析构函数
//析构函数与构造函数想法,构造函数用于构造一个对象,析构函数则用于对对象被销毁后清除它所占用的内存空间,比如说它可以清除由析构
//函数创建的内存。
//注意:一个类只能有一个析构函数,无乱你以什么形式来重载析构函数,都会导致出错
#include <iostream>
//使用命名空间
using namespace std;
class A
{
public:
A(){}
//析构函数,与构造函数的差别在于多了一个 ~符号 ,此方法是在类注销时调用。
~A(){}
}
析构对象数组
//当要声明很多对象,那么可以将对象声明到一个数组中
int main(){
//编号为0的对象 以及编号为1的对象
//在创建由两个对象组成的数组时,会先创建对象即调用两次构造函数
//在调用结束后,会再调用两次析构函数进行内存释放
A a[2];
return 0;
}