ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

记录C++ 6

记录C++ 6 static 关键词在C语言和C区别static在C语言用于修饰局部变量增加生命周期修饰全局函数改变作用域仅当前文件使用static在C里面表示静态关键词用于修饰成员变量和成员函数修饰成员变量在class里面进行声明在class外进行初始化特点1 修饰的成员变量属于类不属于具体的对象2 成员的变量内存在程序开始时运行分配程序结束时释放内存3 成员变量对于所有的对象是共享的4 静态成员使用时必须初始化不然会在链接步骤报错#include iostream using namespace std; class A { public: int i; static int j;//申明一个静态成员 类型为int void Shou() { cout i endl; cout j endl; } }; int A::j20;//静态成员必须要在外面初始化 int main() { cout A::j endl; //静态成员可以直接域访问符操作 return 0; }修饰成员函数特点1 可以被对象直接使用2 可以通过类名直接访问3 不能使用this指针与类关联不与对象关联在调用静态函数时可以在没有对象时调用#include iostream using namespace std; class A { public: void Show() { cout i endl; cout j endl;//非静态成员函数可访问静态成员 } static void StaticShow() //静态成员函数没有this指针 { //cout i endl; //静态成员函数不能访问非静态成员 cout j endl; } int i; static int j }; int A::j20; int main() { cout A::j endl; A::StaticShow(); // 通过类名调用静态成员函数 return 0; }const关键字const修饰成员变量只能在初始化列表中初始化class A { public: const int id; int value; //在初始化列表中初始化 const 成员 A(int _id, int _value) : id(_id), value(_value) {} };const修饰成员函数1 防止成员函数修改非静态成员变量的值2 const成员可以修改静态成员变量3 const成员函数可以和同名非const成员函数构成函数重载class Box { public: Box(int w) : width(w) {} //初始化列表初始化成员变量 int getWidth() const; //const函数声明 void setWidth(int w); void showBox(); static int x; //静态成员变量 int width; //非静态成员变量 }; int Box::x 10; //静态成员变量初始化 void Box::showBox() { cout width endl; } void Box::setWidth(int w) { width w; } int Box::getWidth() const { x 5; //const函数可以修改静态成员变量 //width 10; //error! const函数无法修改非静态成员变量 //setWidth(10); //error! const函数无法调用非const函数 //showBox(); //error! const函数无法调用非const函数 return width; }友元函数友元函数不是成员函数定义在类的外部只需在类中声明友元函数可以访问类中的私有成员和受保护成员#include iostream using namespace std; class Human { public: Human(int id):m_id(id){} friend void DoNat(const Human h); //声明该函数是我的友元 private: int m_id; }; void DoNat(const Human h) //友元函数可以访问类中私有和保护成员 { cout h.m_id:is greenendl; } int main() { Human h(420881); DoNat(h); return 0; }友元类一个类声明另一个类是自己的友元被声明的类可以访问友元类的私有成员和保护成员友元不具备相互性不能被继承不具有传递性#include iostream using namespace std; class Control; class TV { public: TV(int channel 1) : m_channel(channel) {} void Show() { cout 正在看CCTV m_channel endl; } void CS(Control con); friend class Control; private: int m_channel; }; class Control { public: void ChangeChannel(int channel, TV tv) int main() { TV tv; tv.Show(); Control con; con.ChangeChannel(5, tv); return 0; }
返回列表