c++--语言本身

c++

  • 面向对象概念(cout cin 类、对象 面向对象和面向过程求解问题)
  • 易犯错误模型(引入成员函数的必要性)
  • C语言和C++语言的关系
  • namespace 定义(嵌套)、使用、标准命名空间std、iostream中没有引入std
  • 实用性增强(变量定义)、全局变量定义检查(严格)、变量类型检查严格、所有变量和函数定义必须有类型
  • struct关键字(c中不是新类型),与class功能相同
  • 类型加强 bool 1个字节,但只有true和false
  • c++中三目运算符 返回变量自身 c中返回的是变量的值 (可做左值)

初学c++有点小激动

  • 内联函数(请求、函数调用处插入函数体,压栈,跳转和返回的开销,与带参数的宏区别)
  • 默认参数(形参有一个默认值,有一个是默认参数,则右边的均是默认参数才行)
  • 函数占位参数 运算符重载后置++ int func(int a, int b, int ) 在函数体内部无法使用占位参数
  • C++对C的函数扩展
    • 内联函数(请求、函数调用处插入函数体,压栈,跳转和返回的开销,与带参数的宏区别)
    • 默认参数(形参有一个默认值,有一个是默认参数,则右边的均是默认参数才行)
    • 函数占位参数 运算符重载后置++ int func(int a, int b, int ) 在函数体内部无法使用占位参数
    • 默认参数和占位参数在一起 int func(int a, int b, int =0)
    • 函数重载
      • 概念(函数名称一样 函数参数不一样)
      • 函数返回值不是判断标准
      • 调用规则(按照名称、个数、类型)
      • 函数重载遇上函数默认参数,调用是二义性
      • 函数指针语法:定义函数类型 定义函数指针类型 定义函数指针变量
      • 函数重载和函数指针在一起
  • 默认参数和占位参数在一起 int func(int a, int b, int =0)
  • 函数重载
    • 概念(函数名称一样 函数参数不一样)
    • 函数返回值不是判断标准
    • 调用规则(按照名称、个数、类型)
    • 函数重载遇上函数默认参数,调用是二义性
    • 函数指针语法:定义函数类型 定义函数指针类型 定义函数指针变量
    • 函数重载和函数指针在一起

命名空间

#include <iostream>

using namespace std;

iostream 提供一个叫命名空间的东西, 标准的命名空间是 std

#include <iostream>

//方式二:
#if 0
using std::cout; //声明命名空间中的一个变量
using std::endl;
using std::cin;
#endif

//方式三
using namespace std;

int main(void)
{
	int a = 0;
#if 0
	//方式一:
	std::cout << "nihao shijie" << std::endl;
	std::cout << "nihuai shijie" << std::endl;
#endif

	cout << "nihuai shijie" << endl;

	cin >> a;


	return 0;
}

命名空间的定义

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

using namespace std;



//定义一个命名空间
namespace spaccA {
	int g_a = 10;
}

namespace spaceB {
	int a = 20;

	namespace spaceC {
		struct teacher
		{
			int id;
			char name[64];
		};
	}

	namespace spaceD {
		struct teacher
		{
			int id;
			char name[64];
		};
	}

	using namespace spaceC;

}



int main(void)
{
	//using spaccA::g_a;
	using namespace spaccA;
	int a = 20;
	cout << g_a << endl;


	//spaceB::spaceC::teacher t1;
	//using spaceB::spaceC::teacher;

	//teacher t1;

	//using namespace spaceB::spaceC;
	//spaceB::spaceC::teacher t1;

	using namespace spaceB;
	teacher t1;

	t1.id = 10;

	//spaceB::spaceD::teacher t2;
	//t2.id = 20;

	return 0;
}

c++语言增强的地方

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>


using namespace std;

//c++语言对全局变量的定义检测能力增强了
int g_val; //bss段
//int g_val = 20;

struct  student
{
	char name[64];
	int id;
};

void test1()
{
	//定义一个变量 可以随用岁定义
	int i = 0;

	for (int i = 0; i < 10; i++)
	{

	}

	int b = 20;
	cout << "b " << b << endl;
}

void test2()
{
	student s1;
	s1.id = 20;
}


int foo()
{
	return 10;
}

int g(int a)
{
	return 10;
}

//bool类型
void test3()
{
	//true 1  false 0  只能取这两个值
	bool flag = true;

	flag = false;

	flag = true;
	cout << "flag(true)" << flag << endl;
	flag = false;
	cout << "flag(true)" << flag << endl;
	flag = -20;
	cout << "flag(true)" << flag << endl;

	cout << sizeof(flag) << endl;
}

void test4()
{
	int a = 10;
	int b = 20;
	int c = 0;
	c = (a < b) ? a : b;
	cout << c << endl;
	//! 三目运算符 可以当左值。
	((a < b) ? a : b) = 50;
	//a = 50;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	#define A 20
	// const int f = 20;
}

void test5()
{
	const int a = 10; //a 是真正的常量

	int *p = (int*)&a;

	*p = 20;//改变的是临时开辟的temp变量

	cout << "a =" << a << endl;
	cout << "*p=" << *p << endl;

	int array[a] = { 0 };
	cout << A << endl;//20
	//cout << 10 << endl;
	// cout << f << endl;
}


enum season
{
	SPR = 0,
	SUM,
	AUT,
	WIN
};

void test6()
{
	enum season s = AUT;

	if (s == AUT) {
		cout<<"hello";
	}
}

int main(void)
{

	//test2();
	//test3();
	//g(10, 20, 30);
	test4();
	test5();
	test6();
	return 0;
}

c++语言增强的地方

#include <stdio.h>

int g_val; //bssśÎ
int g_val = 20;//data

struct student
{
	char name[64];
	int id;
};

foo()
{
	return 10;
}

int g(int a)
{
	return 10;
}

void test4()
{
	int a = 10;
	int b = 20;
	int c = 0;

	//×óÖľ ÓŇÖľ

	c = a < b ? a : b;

	printf("c = %d
", c);

	*(a < b ? &a : &b )= 50;
	//10
	//10 = 50;
	printf("a = %d
", a);
}

void test5()
{
	const int a = 10;
	//int array[a] = { 0 };

	int *p = &a;//一引用a的地址,并未创造新的空间,p指向a

	*p = 70;

	printf("a = %d
", a);

}

enum season
{
	SPR = 0,
	SUM,
	AUT,
	WIN,
	WIN1,
	WIN2,
	WIN64,
};

void test6()
{
	enum  season s = 2;

	s = 64;

	if (s == 2) {
		//
	}
}

int main(void)
{
	int a = 10;
	int b = 20;

	struct student s1;
	s1.id = 20;

	test4();
	//,,,


	printf("%d
", g_val);

	//g(10,20,30,40,50);
	printf("-----------------
");
	test5();
}
原文地址:https://www.cnblogs.com/ygjzs/p/12073561.html