C++基础

C++基础

标识符可见范围(using namespace std)

C++中的函数库并非在整个代码段中都是默认可见可以任意调用的,如果没有这样的声明(using namespace std),就需要用如下的方式调用

std::cout<< std::hex<< 3.4<< std::endl;

声明之后可以直接写成

cout << hex <<3.4<<endl

数组

基础用法如下:

double a[4];
double b[] = {1,2,3};

对于如上的数组b[]={1,2,3},我们希望得到它的具体内容:

#include<iostream>
using namespace std;

int main(){
  double b[]={1,2,3};
  int length = sizeof(b)/sizeof(b[0]);
	for (int i=0;i < length;++i){
		cout <<b[i]<<endl;
	}
	return 0;
}
<<<<1
2
3

如上代码中的sizeof(b)是得到整个数组b的大小(以字节为单位),也就是b是double型的数组(double型占8个字节),b中有3个数,所以sizeof(b)=24,再除以b数组第一个的大小(sizeof(b[0]))就是b的元素个数;

然后endl的作用是输出之后换行;

子函数相关

首先给一段代码:

void swap(int &a, int &b)
{
   int c = a;
   a = b;
   b = c;
 }
 int main()
 {
   int a = 1, b = 2;
   swap(a,b);
   cout<<"a="<<a<<",b="<<b<<endl;
 }
  • 函数名前面的返回值类型可以不写,默认为空类型void.
  • 不同的函数可以有相同的名字,根据他们的输入值区分,称为重载.
  • 传参时,可以为swap(int a, int b),这是传值;也可以swap(int &a, int &b)是传地址,后者更好.
  • 子函数内的值的作用域仅限当前子函数,如果子函数内想要调用全局变量,需要使用::a

指针

给一个例子:

#include <iostream>
 
using namespace std;
 
int main ()
{
   int  var = 20;   // 实际变量的声明
   int  *ip;        // 指针变量的声明
   int b
 
   ip = &var;       // 在指针变量中存储 var 的地址
 
   b = *ip //把ip存储的地址的值取出赋给b
 
   return 0;
}
  • ip存的是var的地址,ip=0x7fff3577c820.
  • *ip是var的值,*ip=20;进一步b=*ip=20.
  • openFOAM中有autoPtr创建指针,可以自动删除.

类型别名的定义

typedef 关键词的语法是:

typedef existing_type new_type_name;

例如:

typedef std::vector<std::pair<int,double>> IntDoublePairVector

上述代码用IntDoublePairVector代替原来的类型名.其中std::vector<std::pair<int,double>>是存储了整型和双精度浮点型组成的键值对的向量

面向对象

类的定义,如下例子:

#include <iostream>
 
using namespace std;
 
class Box
{
   public:
      double length;   // 长度
      double breadth;  // 宽度
      double height;   // 高度
};
 
int main( )
{
   Box Box1;        // 声明 Box1,类型为 Box
   double volume = 0.0;     // 用于存储体积
 
   // box 1 详述
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;
   // box 1 的体积
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Box1 的体积:" << volume <<endl;
   return 0;
}
  • class声明了类box,用对象声明对象Box1,直接调用方式为Box1.height.
  • 对象的指针也可以类似的声明box Box2,而此时调用方式为Box2->height*.
  • 类内变量分public对类内和类外均可见protected仅对类内的和子类可见private仅对类内可见.
  • 类的定义后面还要有一个分号.

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值