C++学习总结(一)

一.C++的特点

1>强类型 

    (C语言的类型检查弱)注重类型,严格检查类型匹配 

    例如: C: int *p1;                                 C++:      int *p1;    

                    double *p2;                                        double *p2;

                    p1=p2;//自动完成类型转换                p1=p2;//Error不可以进行直接赋值,

2>支持面向对象编程(oop):封装,继承,多态

3>泛型编程(GP):异常, 模板(函数模板,类模板),标准模板库

二.C++的数据类型定义与输出

1>

int a(5);
cout<<a;
double b(3.5);
cout<<b;
char *str("china");
cout<<str;
Wchar_t *str1(L"china");
Wcout<<str1;//宽字符,用于汉字
//注:cout泛型编程,可接受不同的类型

2>命名空间,解决重定义的问题,解决变量,类,函数的重定义问题。

3>头文件#include<iostream>与C头文件加以区别

三.命名空间

1>解决重定义

2>可以嵌套,进行迭代式开发。

3>可以不加空间名称直接引用。

4>可以定义别名,namespace r=run;

5>命名空间可以拓展,增加变量,类,函数,命名空间等,

6>用函数指针作为接口,提高兼容性。

7>命名空间中全部内容都是公有的是透明的,而结构体默认是公有的透明的,可以定义为私有。

8>作用域为从using namespace开始下面的代码直到结束,且必须在命名空间的后方,如果变量重名,会出现不明确错误,要加上作用域。命名空间在块语句内部,作用域为从块语句开始到结束。

9>C语言中出现重名,全局变量与局部变量重名,无法引用全局变量,C++可以通过域运算符引用全局变量。

#include"iostream"
#include<stdlib.h>
int add(int a, int b);
namespace myspace
{
	int a(10);
	int(*p)(int, int)=add;
}
int add(int a, int b)
{
	return a + b;
}
namespace
{
	int b(8);
}
namespace runrunrun
{
	int c(6);
}
struct my
{   
	int e=8;
private: 
	int d=10;//  私有不能访问
};
namespace r = runrunrun;
int a(5);
void main()
{
	int a(1);
	std::cout << ::a;
	std::cout << a<<std::endl;
	std::cout << myspace::a << std::endl;
	std::cout << b<<r::c << std::endl;
	using namespace std;
	cout << myspace::p(1, 2) << endl;
	system("pause");
}

#include<stdio.h>
int a=5;
void main()
{
  int a=3;
  printf("%d",a);
}

C++:
#include<iostream>
int a=5;
void main()
{
  int a=3;
  std::cout<<::a;//引用全局变量
}

#include<iostream>
namespace space
{
	template<class T> using ptr = T*;
}
int add(int a, int b)
{
	return a + b;
}
typedef int(*ADD)(int a, int b);
using FUNC = int(*)(int a, int b);
void main()
{
	//int (*p)(int, int) = add;
	ADD p=add;
	std::cout<<p(1, 2)<<std::endl;
	FUNC func = add;
	std::cout << func(1, 2) << std::endl;
	space::ptr<int> pint = (new int(3));
	std::cout << *pint<< std::endl;
	std::cin.get();
}

C与C++头文件的区别是有没有命名空间。

四.auto变量作用

1>自动变量,根据右值,自动区别匹配数据类型,

(int double char)
num[10]={0};
for(auto data:num)
//自动取出num中的值
{
    std::cout<<data;}
2>自动循环,循环一维数组常量
//num[i][j];
for(auto data:num)
{
   std::cout<<data;//行地址
   for(int i=0;i<j;i++)
   {
    std::cout<<*(data+i)<<std::endl;
    }
}







       

                 

                  

     

   

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值