My first C++ program
C++是一种面向对象编程的语言(object-oriented programming), 对象具有封装、继承、多态三大特征。
- 新建 _program.cpp 文件
在这里插入代码片
#include<iostream> // 预编译指令头文件
using namespace std;
int main(){
cout << " My first C++ program " << endl;
return 0;
}
编译 g++ _program.cpp -o _program
2.作用域,局部变量(local variable ) 和global variable,重名, 一般作局部变量会覆盖全局的变量,但是C++的"::"作用域
#include<iostream>
using namespace std;
unsigned int a = 10;
int main(){
unsigned int a = 100;
cout << " ::a " << ::a <<" a " << a << endl;
return 0;
}
- namespace 只能
3.1 定义全局作用域,
3.2 可以嵌套定义
3.3 开放且可以追加
3.4 声明和实现可以分开
3.5 匿名命名空间,只能在本文件内访问,类似C语言的static变量,使得其可以作为内部连接
3.6 命名空间的 别名(alias)namespace aliasname = orgname;
#include<iostream>
using namespace std;
namespace A{
unsigned int a = 100;
}
namespace B{
unsigned int a = 101;
}
// 命名空间是可以嵌套的
namespace C{
int d = 11;
namespace D{
unsigned int d = 12;
}
}
// 命名空间是开放且可以追加的
namespace B{
void fun(){
cout << "I am namespace " << endl;
}
void func2();
}
// namespace instance
void B::func2(){
cout << "I am instance " << endl;
}
// anonymous namespace
namespace{
unsigned int a = 10000;
void func3(){
cout << "anonymous namespace " << a << endl;
}
}
int a = 100;
int main(){
/* error case:
namespace C{
unsigned int c = 10;
}
*/
cout << "namespace A::a" << A::a << "namespace B::a" << B::a << endl;
cout << "namespace C::D::c"<<C::D::d << "namespace C::d" << C::d << endl;
B::fun();
namespace aliasname = B;
aliasname::func2();
func3();
cout << "anonymous namespace " << ::a << endl;
return 0;
}
- using 声明可使得指定的标识符可用。可以认为就是一种自定义的变量, 类似java的export
#include<iostream>
using namespace std;
namespace A{
int parameterA = 10;
int parameterB = 20;
void func1(){
cout << "this is method of func1" << endl;
}
void func2(){
cout << "this is method of func2" << endl;
}
}
int main(){
cout << A::parameterA << endl;
A::func1();
using A::parameterB;
using A::func2;
func2();
cout << parameterB << endl;
return 0;
}
5.在这里插入代码片
1 using 函数的重载
#include<iostream>
using namespace std;
namespace A{
void func(int x ,int b,int c)}{
cout << "three parameter" << endl;
}
void func(int x){
cout << "one parameter" << endl;
}
}
int main(){
using A::func;
func(20);
return 0;
}
5.using 编译指令
#include<iostream>
using namespace std;
namespace A{
int paraA = 10;
int paraC = 40;
void func(){
//TODO
}
}
namespace B{
int paraA = 20;
int paraB = 30;
void func(){
//TODO
}
}
int main(){
using namespace A;
using namespace B;
// reference to ‘paraA’ is ambiguous
cout << paraA << endl;
int paraC = 100; // 不会出现引用冲突
cout << paraC << endl;
return 0;
}
在这里插入代码片