当前位置: 首页 > wzjs >正文

怎样创建网站快捷方式玉树州网站建设公司

怎样创建网站快捷方式,玉树州网站建设公司,新网页游戏传奇,网页设计实训报告结论1、内联函数(inline) 内联函数主要是解决C语言的宏的缺陷提出来的; 宏的缺陷: 1)容易出错,语法坑很多; 2)不能调试; 3)没有类型安全的检查; 宏的…
1、内联函数(inline)

内联函数主要是解决C语言的宏的缺陷提出来的;

宏的缺陷:

1)容易出错,语法坑很多;

2)不能调试;

3)没有类型安全的检查;

宏的优点:

1)没有类型的严格限制;

2)针对频繁调用小函数,不需要再建立栈帧,提高了效率;

// 内联函数的使用示例
inline int add(int x, int y)
{return x + y;
}int main()
{add(1, 2);  // 在debug模式下不会展开,方便调试;// 但是在release版本下可以展开;// 不像宏一样只是单纯的替换,减少了语法坑;// 内联函数虽然有诸多好处,但是容易导致目标文件过大,因此一般只将很小的函数设为内联;// 有一些编译器会自动识别,过大和递归的函数设置为内联会被编译器忽略;// 内联函数不能声明和定义分离;// 因为内联是在汇编的时候就已经要展开了,如果声明和定义分离就要在机器语言链接的时候才能关联;// 链接的符号表里内联函数不会存在,编译器也默认在之前就已经展开了;// 因此会报链接错误;
}
2、C++11语法糖
1)auto

根据等式右边的值自动推导左边的值的类型;该方案在常规情况下价值比较低,只有在类型名字很长的时候才能体现它的价值;

比如:std:: vector<std::string>::iterator oo = v.begin();  ——>auto oo = v.begin();

但需要注意auto不能作为函数的参数也不能用来声明数组;

小扩展:

如果用着用着不记得类型是啥了,可以通过typeid(变量).name()返回类型字符串;

2)范围for
int main()
{int array[] = {1, 2, 3, 4, 5};// 传统遍历数组的方法for(int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)cout<< array[i] << " ";cout << endl;// 范围for用法// 这里是把array里的值赋值给e哦,所以改变e是不会改变array里面的值的;for(auto e : array)  // 这里不是非得用auto,用int也可以,只是auto比较通用比较方便{cout << e << " ";}cout << endl;return 0;
}void func(int array[])
{// 此处会报错哦,因为此处array看起来是数组,其实是指针啦,范围for不支持;for(auto e : array)  cout << e << endl;
}
3)空指针nullptr

NULL实际是一个宏,在传统的C头文件(stddef.h)中,可以看到:

#define NULL 0   (C++自己定义的,C语言没有)

因此在有些地方,会被识别为字面常量0,也容易导致一些错误的出现,如:

void func(int p)
{cout << "int" << endl;
}void func(int* p)
{cout << "int*" << endl;
}func(NULL);  // 此处会显示“int”而不是“int*”
//为了解决这种错误,引入nullptr代表空指针;
3、 类和对象

之前有说过,在C++中兼容的结构体,本质上已经升级为了类,但是纯正的类,更喜欢用class作为定义类的关键字;而且,struct和class还是有一定的区别的,主要就是在访问限定符的使用上。

1)访问限定符

访问限定符:public(公有)、protected(保护)、private(私有)【目前暂时可以将保护和私有看作是一样的】——公有在类的外面可以访问,保护和私有只能在类里面访问;

class Stack
{
// 成员函数
void Init()
{a =nullptr;top = capacity = 0;
}void Push(int x)
{
// 扩容判断if(top = capacity){size_t newcapacity = capacity == 0 ?4 : capacity * 2;a = (int* )realloc(a, sizeof(int)*newcapacity);capacity = newcapacity;}// 插值a[top++] = x;
}// 成员变量int* a;int top;int capacity;
}int main()
{Stack ss;ss.Init();ss.Push(1);  // 此处都会报错哦,error:访问私有数据;//  修改的方法,要不然把class改成struct,要不然就在需要外部访问的成员前加”public:”修饰;//  访问限定符的修饰范围是从访问限定符开始到下一个访问限定符/结束;//  class的默认访问限定是私有的哦,所以没有加public都是私有的都不能访问哦~//  访问限定符只限制类外访问,类中访问无限制;return 0;
}// 类也可以声明和定义分离
// test.h
class Stack
{
public:// 成员函数void Init();void Push(int x);
private:// 成员变量int* a;int top;int capacity;
}//  test.cpp
void Stack::Init()
{a =nullptr;top = capacity = 0;
}void Stack::Push(int x)
{// 扩容判断if(top = capacity){size_t newcapacity = capacity == 0 ?4 : capacity * 2;a = (int* )realloc(a, sizeof(int)*newcapacity);capacity = newcapacity;}// 插值a[top++] = x;
}

小扩展:
1)之前有提到过,一个语句如果要用一个函数或者一个变量,都是去之前的也就是上面的语句中查找,如果需要用到的函数或者变量在这个语句之后定义,就会出现找不到的情况,这种的话需要提前写一个声明才可以。
但是类里面的话,我们一般习惯把成员函数写在上面,成员变量写在下面,这种写法却不会出现找不到的情况,因为类是一个整体,所以里面的变量和函数无关顺序;
2)还需要注意,在类里面定义的成员函数默认就是内联函数,这一点后面会具体说;
3)成员的命名习惯:为了避免引用参数和成员变量同名导致错误的产生,比如时间类:

class Date
{
public:void Init(int year, int month, int day){year = year;  //  此处虽然不会报错,但是也并不会被正确的初始化,因为局部优先,会变成参数自己赋            值给自己,而不会赋值给成员变量//  因此,成员变量一般命名为“_year”、"year_";该方法虽然不是必须的,但是是约定俗成的;}
private:int year;int month;int day;
}
2)类的作用域

类定义了一个新的作用域,类的所有成员都在类的作用域中。在类外定义成员时,需要使用::作用域操作符指明成员属于哪个类域;——  这个在声明和定义分开的部分已经举过例子了;

// 以下脑洞大开的用法
class Date
{
public:void Init(int year, int month, int day){_year = year;_month = month;_day = day;}
private:int _year;int _month;int _day;
}int main()
{Date::_year;Date._year;  //  都是非法语句哈//  因为类里面的成员变量设置的地方只是一个声明,不是定义;//  无法访问一个声明里面的变量;
}
3)类的实例化

文章转载自:

http://BYbXu4JI.rksjz.cn
http://6BHR4aKQ.rksjz.cn
http://X8wjhaRw.rksjz.cn
http://My3dzxok.rksjz.cn
http://qKVdyMTf.rksjz.cn
http://gtu2clqj.rksjz.cn
http://77NXDet9.rksjz.cn
http://b4t4cjHF.rksjz.cn
http://Mci5CV8B.rksjz.cn
http://eZ4jRO1X.rksjz.cn
http://V9Sjlu3G.rksjz.cn
http://O9HbCcb7.rksjz.cn
http://k0t247jt.rksjz.cn
http://4nCV8rf3.rksjz.cn
http://BAGVSVWR.rksjz.cn
http://ASAyoV53.rksjz.cn
http://KWiTCzfj.rksjz.cn
http://qhZW7zkq.rksjz.cn
http://SZCcSUYK.rksjz.cn
http://xl3atsiU.rksjz.cn
http://coRVPkZV.rksjz.cn
http://F7na31hk.rksjz.cn
http://4EbwDvxN.rksjz.cn
http://lft2aGkk.rksjz.cn
http://30kNPepU.rksjz.cn
http://pmylzdSy.rksjz.cn
http://TqlSczyH.rksjz.cn
http://Pr1RJnvZ.rksjz.cn
http://GAA4aJV0.rksjz.cn
http://1kHiZDEp.rksjz.cn
http://www.dtcms.com/wzjs/753499.html

相关文章:

  • 网站推广的途径和方法国外优秀网站设计欣赏
  • 网站建设及网站推广辽宁省住房和城乡建设厅网站换了
  • 企业网站php广州网站建设 易点
  • 设计师 推荐 网站新乡做网站公司电话
  • 乐清市网站建设哪家性价比高淄博品牌策划公司
  • 门户网站建设信息化项目背景做蛋糕视频的网站
  • 做网站建设的公司行业门户型网站
  • 做渐变色的网站广州做模板网站的公司
  • 全国p2p网站建设企业网站设计一般多少钱
  • 桂林网站排名常州网站建设教程
  • 利用excel做填报网站顺的网站建设信息
  • 网站制作先做数据库还是前台苏州网站 制作 公司
  • 网站建设比较好的公司都有哪些眉山 网站开发
  • 怎么样做好网站运营中国建设银行网站的社保板块在哪
  • wordpress为什么是英文版快速整站排名seo教程
  • 做网站用什么后缀格式做好wordpress 主题 域名
  • 网站源码程序修改wordpress next主题
  • wap建站程序源码制作外贸网站成本
  • 网站开发外包费用会计科目网站插件代码怎么用
  • 网站上传图片教程seo策略怎么写举例
  • 山东网站建设空间响应式网站模板的优势
  • 怎么让人搜索到自己做的网站wordpress 文章延时加载
  • 网站建设建站知识一个完整网页的制作
  • idc 公司网站模板魏县审批建设的网站
  • 盘锦建网站中信建设有限责任公司历任董事长
  • 冠县网站建设公司哪家公司搭建网站
  • 全国网站建设哪家专业郑州最新情况
  • 四川省建设注册资格中心网站建设网站有哪些术语
  • 衡水有做网站的吗做网站服务器用谁的
  • 网站开发工程师自学重庆制片公司