欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++小记(一)

程序员文章站 2022-03-11 22:33:54
...

Namespace 命名空间

     作用:避免重复定义,解决合作开发中命名冲突的问题

     例:

#include <iostream>

using namespace std;

namespace A
{
	int a = 1;

	void print()
	{
		cout << "namespace A" << endl;
	}
}

namespace B
{
	int a = 2;
	void print()
	{
		cout << "namespace B" << endl;
	}
}

namespace C  //命名空间的嵌套
{
	namespace D
	{
		int a = 3;
		void print()
		{
			cout << "namespace C::D" << endl;
		}
	}
	
}

int main()
{
	/*using namespace A;  // 命名空间的使用,此优先级高于后面的使用方法
	//cout << "a = " << a << endl;

	//cout << "a = " << B::a << endl;

	//using B::a;          //命名空间的使用2,此优先级略低
	//cout << "a = " << a << endl;
	//print();
	
	//cout << "a = " << C::D::a << endl;
	C::D::print();
    return 0;
}

一些C与C++的区别

  1.       register变量,对register变量取地址,C编译时不通过,C++编译时通过,但是该变量转换为普通变量
  2.       C++中不允许重复定义全局变量,C允许
  3.       C中三目运算符的结果不能作为赋值的左值,C++可以

插曲1:

      const与#define的区别

      const在函数内部有效,局部变量;#define从这一行代码开始往下都有效

 

引用

          引用一定要初始化,但是不能用常量初始化引用

       

#include "iostream"

using namespace std;

void swap(int &x, int &y)
{
	int temp = x;
	x = y;
	y = temp;
}

struct Test
{
	char &x;   //引用其实就是常指针
	char &y;
};

void init(char *&str)
{
	str = (char *)malloc(100);
}

int main()
{
	/*
	int a = 1 , c = 3;
	int &b = a; //定义引用,一定要初始化,但不能用常量初始化
	cout << "b = " << b << endl;
	swap(a, c);
	cout << "a = " << a << "   c = " << c << endl;
	*/

	
    int a = 1;
	char b = 'a';
	int &c = a;
	char &d = b;

	cout << sizeof(c) << endl;    //结果为4
	cout << sizeof(d) << endl;    //结果为1
	cout << sizeof(Test) << endl; //结构体中只做声明,引用相当于常指针,结果为8
    

	char *ptr = NULL;
	
	init(ptr);   //引用指针
	strcpy(ptr, "hello");
	
	cin.get();
	return 0;
}

默认参数

           默认参数一旦使用,后续形参都必须使用默认参数

          

int add(a, b = 1, c)     //错误写法
int add(a, b = 1, c = 2)  //正确写法

占位参数

          占位参数主要是为了日后代码修改方便,提升代码的可重用性,为后续需要添加的参数预留位置

int add(int x, int y, int , int )// 后两位即为占位参数,传参时需传递4个参数

占位参数常和默认参数结合使用,如此可减少传参的数量,需要几个传几个,定义遵循默认参数的原则

int add(int x, int y, int = 0, int =0)    //后两位占位默认参数

 

小提重载

          构成函数重载的条件:

  1. 参数的个数不同
  2. 参数的类型不同
  3. 参数的顺序不同

返回值的不同不是构成函数重载的条件

相关标签: 小记