VC++6.0入门——第三讲 认识MFC框架 作者:Arya
https://cloud.tencent.com/developer/article/2465888?shareByChannel=link
文章对 VC++6.0 入门中 MFC 框架的第三讲内容作引,介绍剖析 MFC 框架程序,提及新建项目成果、类继承图查看和搜索内容,非常详细,让读者对 MFC 框架有了更深刻的认识。
在使用 C 语言进行编程的漫长历程中,我们不难发现 C 语言有着极为严格的要求。从语法规则到编程逻辑,每一个环节都容不得丝毫马虎。编程过程往往异常繁琐,其中存在着大量大同小异的重复性工作。就连 C++ 之父在使用 C 语言编程时,也深受这些问题的困扰。正是在这样的背景下,C++ 兼容 C 的小语法应运而生,它在一定程度上缓解了 C 语言编程中的诸多不便。
命名空间在 C++ 中是一个重要的概念,其形式为 “namespace + 命名空间名”。例如,我们熟知的 “namespace std(标准命名空间)”,它包含了 C++ 标准库中的所有内容。通过这种方式定义的命名空间就像是在程序世界中划分出了特定的区域。
以下是一个详细的代码示例,展示了在命名空间中可以进行的各种定义:
namespace yang
{
int x=0;//定义变量
//定义函数
int Add(int x,int y)
{
return x + y;
}
//自定义类型
struct Student
{
int num;
char name[20];
};
//嵌套命名空间
namespace bit
{
int x = 0;
}
}
从这个示例可以看出,在命名空间内,可以定义变量、函数、自定义类型,甚至还可以进行嵌套命名空间的操作。这种灵活性为程序的组织和管理提供了很大的便利。
作用域符 “::” 在 C++ 中扮演着关键的角色,它可以让我们准确地访问想要访问的作用域里面的内容。这就像是一把精准的钥匙,能够打开特定区域的大门,获取其中的信息。
(1)当前局部域(自家的菜地):在程序执行查找操作时,首先会在当前局部域中寻找所需的内容。这是最优先的查找范围,就如同我们在自家菜地里寻找蔬菜一样,是最直接和便捷的方式。
(2)全局域(野外的地,谁都可以用):如果在当前局部域中没有找到目标,那么就会扩大查找范围到全局域。全局域类似于野外的土地,其中的资源在一定程度上是对整个程序可见的,任何部分都有可能使用其中的内容。
这里有一个重要的问题:默认查找会进入命名空间里面找吗?答案是 No,因为命名空间没有展开,它就像邻居家的菜地,在未经允许的情况下,我们是不可以进入其中查找内容的。
如何才能进入命名空间?需要展开命名空间
展开命名空间有以下几种方式:
(1)全展开:这种方式在平常练习的时候可以使用,但在大型项目中并不推荐。因为全展开可能会导致命名冲突的问题。这就好比在一个大社区里,把所有邻居家的菜地都开放了,很容易出现混乱。
(2)指定展开某一个命名空间:通过这种方式,可以有针对性地打开某个命名空间,避免不必要的冲突。
(3)指定访问:只访问特定命名空间内的指定内容。
代码示例:
#include<iostream>
namespace yang
{
int x = 10;//定义变量
//定义函数
int Add(int x,int y)
{
return x + y;
}
//自定义类型
struct Student
{
int num;
char name[20];
};
//嵌套命名空间
namespace bit
{
int x = 20;
}
}
namespace zhang
{
int x = 30;
}
using namespace zhang;//指定全展开zhang
int main()
{
printf("x=%d\n",yang::x);//指定访问
printf("x=%d\n", yang::bit::x);//指定访问
printf("x=%d\n", x);
}
C++兼容C,C语言的输入和输出通常使用 scanf() 和 printf() 函数C++也可以用,这些函数语法相对复杂,且对数据类型有一定的限制。例如,scanf() 函数在读取字符串时需要指定缓冲区的大小,否则可能会导致缓冲区溢出等安全问题。 C++的I/O流的优势在于支持多种数据类型,而不仅仅是基本数据类型。例如,我们可以使用 std::cin 和 std::cout 来读取和写入字符串、数组、自定义类型等。这使得C++的I/O功能更加灵活和强大。
代码示例:
#include<iostream>
using namespace std;
int main()
{
int x = 10;
double y = 10.5;
cout << "x=" << x << endl;//"x="字符串可以直接输出,endl是换行
cout << "y=" << y << endl;
int a = 0;
double b = 0;
cin >> a;
cin >> b;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
return 0;
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。