C++学习

本文介绍了C++的基础知识,包括创建简单的C++程序,讨论了作用域(局部和全局变量)、命名空间的特性(如嵌套、别名和匿名命名空间),以及using声明和using指令在处理函数重载和引入命名空间中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

My first C++ program

C++是一种面向对象编程的语言(object-oriented programming), 对象具有封装、继承、多态三大特征。
  1. 新建 _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;
}
  1. 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;
}

  1. 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;
}
在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值