您的位置:首页 > 编程语言 > C语言/C++

(C++)零碎知识整理

2018-03-09 21:03 351 查看
#include <iostream>

//命名空间,(名字隔离,可以嵌套)
using namespace std;

namespace one {
int a = 10;
namespace two {
int a = 20;
}
}//注:没有分号
namespace three {
int a = 30;
}
int a = 40;
int main() {
int a = 50;
printf("%d",a);
//a -> 50; 因为就近原则,所以 a = 50;
//::a -> 40; 因为 “::”为域作用限定符,所以此时'a'在整个域中查找,所以 a = 40;
//three::a -> 30; 因为'three::'意为在名字为"three"的域中查找,所以 a = 30;
//one::a -> 10; 因为'one::'意为在名字为"one"的域中查找,所以 a = 10;
//one::two::a -> 20; 因为'one::two::'意为在名字为'one'的域中寻找,名字为'two'的域,然后在名为'two'的域中找寻'a'的值,所以 a = 20。

return;
}

//////////////////////////////////////////

#include <iostream>
using namespace std;
//把std命名空间内东西全部展开
//不可以定义与库内同名的变量

int main() {
cout<<"hello world"<<enfl;
//输出 “hello world”
//cout -> 输出;cin -> 输入;endl -> 换行
return;
}

///////////////////////////////////////

缺省参数

int Add (int a = 10 , int b = 10) {
return a + b;
}

int main() {
cout<<Add(1)<<endl;
//半缺省,只能缺省右边的一个,或者多个;

cout<<Add(1,1)<<endl;
//都补全,不缺省

cout<<Add()<<endl;
//全缺省,缺少所有参数
}


/////////////////////////////////////////////

函数重载



C++ 可以在函数名相同,参数不同(1.个数不同;2.类型不同)的情况下重载;(对应位置,压栈顺序)

C语言 不可以重载

int Add(int a, int b) {
return a + b;
}
int Add(int a, int b,int c) {
return a + b + c;
}
int Add(int a, char b) {
return a + b;
}


C语言在编译过程中,函数名字仍为原本名字,如(Add),所以在链接时,拿函数名寻找地址,C不修饰,即会不知道是该找哪一个函数

C++支持函数名修饰规则,每一个函数被修饰后均有不同,如:(Addii),(Addiii),(Addic)…等等,所以在链接时不会存在找不到函数的情况

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  namespace