去看我新的文章吧这里写的毕竟乱.
这里先讲一个符号::,用了这个就是在全局中或你指定的类中寻找比如:
#include<iostream>
using namespace std;
int a = 1;
int main() {
int a = 10;
printf("%d\n", a);
printf("%d",:: a);
return 0;
}
这样就会输出10 和1了。
那么这里的namespace是什么呢?C++里有个东西叫命名空间,就这个玩意,用了这个,c语言里发生的重名而报错这里就可以用命名空间避免。所以我们可以创建一个namespace,如下:
#include<iostream>
#include"2.h";
#include"1.h";
using namespace std;
int a = 1;
int main() {
struct first::A node1;
struct second::A node2;
}
namespace second {
struct A {
struct A* node;
char a;
};
}
namespace first {
struct A {
struct A* node;
int a;
};
}
这样就不会报错啦。::的另一种用法大家也看到了。
namespace也有多种用法,1上面是指定命名空间访问,2下面讲全局展开。全局展开就像using namespace std一样,你只要using namespace(命名空间的名字),这样就会在这空间里找了。不过项目里不建议全局展开std。那么怎么办呢?3还可以部分展开,比如你要用cout ,可以就
using std::cout;。
接下来我们讲缺省,看一组代码
#include<iostream>
using namespace std;
int add(int x=1, int y=3, int z = 10) {
int sum = x + y + z;
return sum;
}
int main() {
int m1,m2,m3,m4;
m1 = add(3, 4, 1);
m2 = add(3, 4);
m3 = add(3);
m4 = add(4);
cout << m1 << endl;
cout << m2 << endl;
cout << m3 << endl;
cout << m4 << endl;
}
然后会输出8 17 16 14.所以如果你在函数定义中有定义过数字,那么如果调用时你缺省了这个参数,那么参数就会用你定义的那个数字。但是不可跳跃的缺省,应从右往左。那这有啥用嘞?
举个例子,比如开辟空间,你可以定义中给一个数字100,然后这个数让用户来决定,如果不知道开多大的空间,就用你的定义的100,知道的话就用户自己给。
感谢,祝大家共同进步!