表示作用域,和所属关系
比如
class A
{
public:
int test();
}
int A::test()//表示test是属于A的
{
return 0;
}
类似的还有其他,就不列举了
--------------------
比如
int a;
void test ()
{
int a = ::a;//用全局变量a,给本地变量a赋值
}
:: 是运算符中等级最高的,它分为三种:
1)global scope(全局作用域符),用法(::name)
2)class scope(类作用域符),用法(class::name)
3)namespace scope(命名空间作用域符),用法(namespace::name)
他们都是左关联(left-associativity)
他们的作用都是为了更明确的调用你想要的变量,如在程序中的某一处你想调用全局变量a,那么就写成::a,如果想调用class A中的成员变量a,那么就写成A::a,另外一个如果想调用namespace std中的cout成员,你就写成std::cout(相当于using namespace
std;cout)意思是在这里我想用cout对象是命名空间std中的cout(即就是标准库里边的cout)
他们算是C++中的基础,如果运用的好的话,你程序的出错率也许会降很多,
c++中 -> 是什么意思,如何使用
在程序中多次出现如下代码:
memory->destroy (BOP_index);
memory->create (BOP_index,nall,"BOP_index");
还有
int *tag = atom->tag;
int timestep = update->ntimestep;
int newton_pair = force->newton_pair;
很困惑->在这里是什么意思,有什么作用,请高手解答
->是指针的指向运算符,通常与结构体一起使用。
具体使用方法可以参考如下程序:
#include<stdio.h>
struct stu // 定义一个结构体
{
char name[10]; // 姓名
int num; // 学号
int age; // 年龄
};
void main()
{
struct stu *s; // 定义一个结构体指针
char str[]="ZhangLi";
s->name = str; // 对结构体中的成员变量name进行赋值
s->num = 2015120; // 对结构体中的成员变量num进行赋值
s->age = 18; // 对结构体中的成员变量age进行赋值
}
初学MFC,一个符号的疑惑
void CScribDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
ar << m_sizeDoc;
else
ar >> m_sizeDoc;
m_graphList.Serialize(ar);
}
如上面的函数,“<<” 和 ">>",这两个符号在c++里不是输入输出用的么,这里又是什么意思呢?迷惑..
------解决方案--------------------
你可以把它看做是数据流的写入和写出,这只有在数据的序列化中这么使用
------解决方案--------------------
CArchive类重载了operator << 和operator <<操作符
------解决方案--------------------
对的,<< 和 >> 本是 C++ 里面的 插入操作符 和 提取操作符 。
插入操作符 << 的作用是将它后面的内容插入到标准输出流中以便输出,而提取操作符 >> 的作用是从标准输入流中提取数据并存储到它后面的变量中。
根据我的理解,
所谓输入,就是程序运行的时候,从程序的外部拿数据进来使之成为程序自己的东西;
所谓输出,就是程序运行的时候,把程序自己的数据送给外部以供外部来使用。
下面的一段 C++ 代码说明了这两个操作符的用法:
<span style="color:#000000">
#include <iostream.h>
void main()
{
int a;
cout<<"Please enter an integer:\n";
cin>>a;
cout<<"a: "<<a<<endl;
}</span>
再来说说你的这个代码:
<span style="color:#000000">void CScribDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring()) //如果是在存储归档文件(也就是把数据存储到文档中)
ar << m_sizeDoc; //那么就将 m_sizeDoc 变量插入输出流中。这里输出流对象是 CArchive 类的对象 ar ,并且通常情况下 ar 已经和某个特定的文档关联起来了,那么将变量插入输出流中,就是将变量的值写入文档
else //如果当前是在读取归档文件(也就是从文档中读取数据)
ar >> m_sizeDoc; //同上。这里输入流对象是 ar ,那么就是从 ar 中提取数据并将数据保存到 m_sizeDoc 变量中
m_graphList.Serialize(ar); //调用 m_graphList 的 Serialize 函数
}
</span>
------解决方案--------------------
引用:
void CScribDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
ar << m_sizeDoc;
else
ar >> m_sizeDoc;
m_graphList.Serialize(ar);
}
如上面的函数,“<<” 和 ">>",这两个符号在c++里不是输入输出用的么,这里又是什么意思呢?迷惑..
CArchive重写了这两个操作符。
------解决方案--------------------
和cin,cout是一个意思。
------解决方案--------------------
序列号类重载了这两个操作符
------解决方案--------------------
在这里,还是输入输出的意思