WEB开发网
开发学院软件开发VC 初学者指针指南 阅读

初学者指针指南

 2006-04-11 22:54:17 来源:WEB开发网   
核心提示: 常见问题及FAQQ:为什么在使用new和delete的时候会得到“symbol undefined”错误?A:这很可能是由于你的源文件被编译器解释成了一个C文件,因为new和delete操作符是C++的新特性,初学者指针指南(9),通常的改正方法是使用.cpp作为你

常见问题及FAQ

Q:为什么在使用new和delete的时候会得到“symbol undefined”错误?

A:这很可能是由于你的源文件被编译器解释成了一个C文件,因为new和delete操作符是C++的新特性。通常的改正方法是使用.cpp作为你的源文件扩展名。

Q:new和malloc的区别是什么?

A:new是C++特有的关键词,并且是标准的分配内存方法(除了Windows程序的内存分配方法之外)。你绝不能在一个C C++程序中使用malloc,除非绝对必要。由于malloc并不是为C++面向对象的特色设计的,所以使用它为类对象分配内存就不会调用类的构造函数,这样就会出现问题。由于这些原因,本文并不对它们进行讨论,并且只要有可能,我亦会避免使用它们。

Q:我能一并使用free和delete吗?

A:你应该使用和分配内存相配套的方法来释放内存。例如,使用free来释放由malloc分配的内存,用delete来释放由new分配的内存。

引用

从某种角度上来说,引用已经超过了本文的范围。但是,既然很多读者问过我这方面的问题,那么我在此对其进行一个简要的讨论。引用和指针十分相似,在很多情况下用哪一个都可以。如果你能够回忆起来上文的内容——我提到的“&”读作“the address of(……的地址)”,在声明的时候例外。在声明的这种情况下,它应该读作“a reference to(……的引用)”,如下:

int& Number = myOtherNumber;

Number = 25;

引用就像是myOtherNumber的指针一样,只不过它是自动解析地址的,所以它的行为就像是指针指向的实际值一样。与其等价的指针代码如下:

int* pNumber = &myOtherNumber;
*pNumber = 25;
   指针和引用的另一个不同就是你不能更换引用的内容,也就是说你在声明之后就不能更换引用指向的内容了。例如,下面的代码会输出20:
int myFirstNumber = 25;
int mySecondNumber = 20;
int &myReference = myFirstNumber;
myReference = mySecondNumber;
printf("%d", myFristNumber);
   当在类中的时候,引用的值必须由构造函数设置,像下面这种方法一样:
CMyClass::CMyClass(int &variable) : m_MyReferenceInCMyClass(variable)
{
  // 这里是构造代码
}

上一页  4 5 6 7 8 9 10  下一页

Tags:初学者 指针 指南

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接