C++中 auto自己主动变量,命名空间,using作用以及作用域
1.autokeyword的用途
A:自己主动变量。能够自己主动获取类型,输出,类似泛型
B:自己主动变量,能够实现自己主动循环一维数组
C:自己主动循环的时候,相应的必须是常量
2.auto自己主动变量,自己主动匹配类型的案比例如以下:
注意:假设是在QT下执行上面的的程序须要加上C++11的相关配置(CONFIG += C++11)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
3.通过autokeyword自己主动循环一维数组的案例
#include<iostream>
#include<stdlib.h>
#include<iomanip>
usingnamespacestd;
voidmain()
{
//定义一维数组。以下的数组名是一个指针常量
intnum[10]
= { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//通过循环遍历出数组
for
(autodata
:num)
{
cout
<<setw(5) <<data;
}
cout
<<endl;
//当变成二维数组之后,不能直接通过auto来输出
//auto自己主动循环begin endl;必须是一个数组的常量
doublenum2[2][5]
= { 1.0, 2.0, 3.0, 4.5, 5, 6, 7, 8, 9, 10 };
for
(autodata
:num2)//泛型C++语法。循环一维数组,是个常量
{
cout
<<data <<std::endl;
for
(inti
= 0;i < 5;i++)
{
std::cout<<setw(5)
<< *(data +i);
}
cout
<<endl;
}
system("pause");
}
执行结果例如以下:
4.关于头文件
在C++中,为了区分C++,C++中不使用.h文件头
5.C++注重类型。它是一种强类型语言,严格检查类型。
6.C++中的输出函数,宽字符输出,赋初值的方式,输出符,::域控制符
#include<iostream> //在C++中,为了区分C++,C++中不使用.h文件头
#include<stdlib.h>
usingnamespacestd;
voidmain()
{
inta
= 5;
//C++中赋值:A变量名(数值) B:变量名=数值,通过这两种方式。
intb(5);
cout
<<a <<"
" <<b
<<endl;
//通过括号赋值
doublec(3.5);
cout
<<c <<endl;
//通过等号赋值
char
*pStr ="1234";
cout
<< *pStr <<"
" <<pStr
<<endl;
//通过括号赋值
char
*str("china");
cout
<< *str <<"
" <<str
<<endl;
//宽字符,汉子,棒子文
wchar_t
*str2(L"china");
wcout
<< *str2 <<"
" <<str2
<<endl;
system("pause");
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
#include<iostream>
voidmain()
{
//输出符
<<
//std命名空间
//::域控制符
std::cout
<< "hello world";
system("pause");
}
7.一个文件里使用另外一个文件里声明的变量的时候,C++要求显示的加上externkeyword调用这个全局变量。
8.调用命名空间中的变量已经命名空间中的函数
A:有名命名空间
#include"iostream"
#include"stdlib.h"
namespacemyspace
{
inta(15);
voidprint()
{
std::cout
<< "锄禾日当午"
<< std::endl;
}
}
namespacemyspaceA
{
inta(25);
voidprint()
{
std::cout
<< "AAAAAAAAAAAA" <<std::endl;
}
}
voidmain()
{
inta(5);
//假设想不被上面的a变量影响,而直接訪问命名空间
//中的变量,这里要加上命名空间名
std::cout
<< "myspace a = " <<myspace::a
<< std::endl;
//调用myspaceA中定义的变量a
std::cout
<< "myspaceA a = " <<myspaceA::a
<< std::endl;
std::cout
<< "main a = " <<a
<<std::endl;
std::cout
<< std::endl;
//调用命名空间中的函数
myspace::print();
myspaceA::print();
system("pause");
}
执行结果例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
B:无名命名空间
#include"iostream"
//没有命名的命名空间中的參数能够直接调用
namespace
{
inta(3);
voidprint()
{
std::cout
<< "gogogo";
}
}
voidmain()
{
//说明没有命名的命名空间能够直接调用a
std::cout
<< a <<std::endl;
print();
getchar();
}
输出结果是:
3
gogogo
C:命名空间中全部的数据,函数。类,对象都是共同拥有的,结构体内部的默认是共同拥有的。
案比例如以下:
#include<iostream>
//namespace全部数据,函数,类,对象都是共同拥有
namespacerunmove
{
inty(5);
int(*padd)(int,int);//函数指针接口
inty1(5);
classmyclass
{
//类中的变量等默认是私有的
public:
inta;
};
}
//相应上面的函数指针
intadd(inta,intb)
{
returna
+b;
}
intaddp(inta,intb)
{
std::cout
<< a <<"
" <<b
<<std::endl;
returna
+b;
}
//结构体默认是透明的(public的)
structMyStruct
{
intb;
private:
inta;//是私有
};
voidmain()
{
//namespace全部数据,函数,类,对象都是共同拥有
MyStructstruct1;//结构体内部默认公有
struct1.b
= 20;
std::cout
<< struct1.b
<< std::endl;
std::cout
<< runmove::y
<< " " <<runmove::y1
<< std::endl;
runmove::padd
= addp;
std::cout
<< runmove::padd(5,
6) << std::endl;
getchar();
}
9.使用usingkeyword的时候。必须在命名空间的后面
关于作用域:
A:在函数体内使用using的时候,using的作用域是从using这行代码開始到函数体结束。
B:函数体外使用using的时候。作用域是从using这行代码開始到文件本文件结尾。
案例说明:
#include<iostream>
#include<stdlib.h>
namespacemydata
{
inta(6);
}
namespaceyourdata
{
inta(8);
}
//假设想使用mydata这个明明空间,而且使用usingkeyword,这时候要把using放
//在mydata命名空间后面
usingnamespacemydata;
usingnamespaceyourdata;
//using假设变量重名,会出现不明白错误,加上命名空间修饰符
voidgo()
{
//命名空间假设在块语句内部,作用域是定义開始到语句结束
std::cout
<< mydata::a
<< std::endl;
}
//using namespacemydata;//作用域为从代码開始到结束
voidmain()
{
std::cout
<< mydata::a
<< std::endl;
std::cout
<< yourdata::a
<< std::endl;
system("pause");
}
10.命名空间的嵌套,为命名空间起别名,命名空间的拓展
#include<iostream>
namespacerunrunrunrun
{
inta(10);
char
*str("gogogo");
namespacerun //命名空间的嵌套
{
inta(9);
}
}
//命名空间的拓展
namespacerunrunrunrun
{
int y(5);
//int a(15);重定义错误
}
//注意这里的r就是别名,而不是后者
namespacer
=runrunrunrun;//给命名空间起一个别名
voidmain()
{
//命名空间能够嵌套
std::cout
<< r::run::a
<< std::endl;
std::cout
<< r::y
<< std::endl;
std::cout
<< r::a
<< std::endl;
system("pause");
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
11.关于默认參数问题
A:默认參数必须放在右边
B:默认參数中间不同意出现不默认的
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
//默认參数必须放在右边
//默认參数中间不同意出现不默认的
voidprint(intc,inta
= 1,intd
= 2,intb
= 3)
{
std::cout
<< a <<b
<<c <<std::endl;
}
voidprintf(doublec)
{
std::cout
<< "hello,world" <<std::endl;
}
voidmain()
{
//print(1,2,3);
//函数指针没有默认參数,必须所有输入数据
void(*pt1)(intc,inta,intd,intb)
=print;
pt1(100,1,2,3);//函数指针调用。没实用默认的
print(100);
system("pause");
}
C++中 auto自己主动变量,命名空间,using作用以及作用域的更多相关文章
- 《Effective Modern C++》翻译--条款2: 理解auto自己主动类型推导
条款2: 理解auto自己主动类型推导 假设你已经读过条款1关于模板类型推导的内容,那么你差点儿已经知道了关于auto类型推导的所有. 至于为什么auto类型推导就是模板类型推导仅仅有一个地方感到好奇 ...
- C++ 中 auto 与 decltype 的用法与区别
最近在恶补 C++ 知识的时候,学习到了一些 C++11 标准的新特性,利用这些新特性,我们能够更快地提高编程效率,从而实现我们的目标,在此特意记下学习过程中所学习到的一些东西,方便日后的回顾和复习. ...
- 数据库中暂时表,表变量和CTE使用优势极其差别
1 在写SQL时常常会用到暂时表,表变量和CTE,这三者在使用时各有优势: 1. 暂时表:分为局部暂时表和全局暂时表. 1.1局部暂时表,创建时以#开头,在系统数据库tempdb中存储. 在当前的链接 ...
- 2018.8.9 python中的动态传参与命名空间
主要内容: 1.函数参数 ----动态传参 2.名称空间与作用域 3.函数的嵌套 4.global,nonlocal关键字 一.函数参数 ------动态传参 形参的第三种:动态传参 动态传参分为两种 ...
- 第8.34节 《Python类中常用的特殊变量和方法》总结
本章介绍了Python类中常用的特殊变量和方法,这些特殊变量和方法都有特殊的用途,是Python强大功能的基石之一,许多功能非常有Python特色.由于Python中一切皆对象,理解这些特殊变量和方法 ...
- 错误: 从内部类中访问本 地变量vvv; 需要被声明为最终类型
从github 下载了源码, 进行编译, 出现了下面的错误 E:\downloads\ff\elasticsearch-master\elasticsearch-master>GRADLE :b ...
- Spark中Lambda表达式的变量作用域
通常,我们希望能够在lambda表达式的闭合方法或类中访问其他的变量,例如: package java8test; public class T1 { public static void main( ...
- Ubuntu中配置Java环境变量时,出现command not found问题解决记录
百度出Ubuntu中配置Java环境变量时,在利用sudo gedit /etc/profile 对profile编辑后, 在terminal中输入 sudo source /etc/profile, ...
- linux内核中的每cpu变量
一.linux中的每cpu变量 看linux内核代码的时候,会发现大量的per_cpu(name, cpu),get_cpu_var(name)等出现cpu字眼的语句.从语句的意思可以看出是要使用与当 ...
随机推荐
- 外设:K9F2G08 nandflash 底层读写、控制驱动程序,可随机读写
/****************************************************************************** Copyright (C), 2001- ...
- <%@ include file=” ”%> ——最简洁易懂的解释
<%@ include file=” ”%> 假如 在B.jsp 中,使用 <%@ include file=”A.jsp”%> ,那么就是把 A.jsp 的内容 原封不动 ...
- 转:DNS拾遗
最近帮朋友注册域名配置主机,碰到一些DNS上的一些概念,惭愧于有一些东西已经忘记是啥意思,于是决定重新学习一下DNS方面的基本概念. 常用概念: TTL: TTL为Time to live的缩写,网络 ...
- 限制QLineEdit的数值输入范围(一共4种限制器:QDoubleValidator, QIntValidator, QRegExpValidator, 和QRegularExpressionValidator)
在使用QLineEdit输入数值时,经常遇到限制其范围的需要,比如角太阳高度角范围为[-90,90],经度值范围[-180,180],方位角范围[0,360].Qt提供了QIntValidator和Q ...
- 凡客副总裁被曝离职:或因IPO受阻|凡客|王春焕|离职_互联网_新浪科技_新浪网
凡客副总裁被曝离职:或因IPO受阻|凡客|王春焕|离职_互联网_新浪科技_新浪网 凡客副总裁被曝离职:或因IPO受阻 2013年05月07日 00:56 每日经济新闻 我有话说 每经 ...
- location.href使用方法总结
javascript中的location.href有非常多种使用方法,主要例如以下. self.location.href="/url" 当前页面打开URL页面 location. ...
- c++ 重载,覆盖,重定义 2
前一篇 http://www.cnblogs.com/iois/p/4085173.html 写有些地方不够准确,重新整理了一遍 函数重载(Function Overloading) C++允许同一范 ...
- 功能间(两个form)数据交互的编程方法
功能间数据交互的编程方法 现在框架具有在两个打开的功能之间进行通讯的机制.通讯是指,一个功能调用另外一个功能的方法,或者传递一些数据,并得到返回结果.比如处置单打开结算单,结算单保存后,将结算单号反填 ...
- Android 播放声音
public static void PlayAlarmRing(Context mContext) { Uri alert = RingtoneManager.getDefaultUri(Ringt ...
- 【译】在Asp.Net中操作PDF – iTextSharp - 使用表格
原文 [译]在Asp.Net中操作PDF – iTextSharp - 使用表格 使用Asp.Net生成PDF最常用的元素应该是表格,表格可以帮助比如订单或者发票类型的文档更加格式化和美观.本篇文章并 ...