本文共 1436 字,大约阅读时间需要 4 分钟。
1.c++中的类的定义和声明可以都写在头文件中,然后cpp文件include头文件;也可以声明在头文件,定义在cpp文件;或者所有声明和定义都放在cpp文件;混写定义与声明在头文件与cpp文件也可以;
如下:
头文件:
#pragma once
class Client { public: Client(void); int count; char *ip; static int count1; char printf(char *msg); int function(int a,int b) { int c=a+b; return c; } int function1(int a,int b); public: ~Client(void); };源文件:
#include "StdAfx.h" #include "Client.h" #include "winsock.h" Client::Client(void) {} char Client::printf(char *msg) { return *msg; } int Client::function1(int a,int b) { return a-b; } Client::~Client(void) {}2.C++和c一样全局变量放在函数外,如果全局变量声明和定义不在调用者前程序写,则只能在定义点到程序结尾方可调用,如果这样需要全局变量前加上extern;
3.extern是引用全局变量的修饰符;
4.c++中new对象是手动释放,class A自动释放,class A=new class()是手动释放,需要delep(实例);
5.类的指针实例需要->例如class A,普通对象是.例如 class *A
6.::是域操作符
7.
new操作符创建一个对象时所执行的工作如下:
1。从托管堆(managed heap)中分配指定类型所需要数量的字节作为存储该对象的内存空间。
2。初始化对象的附加成员,每一个对象包含两个附加成员。CLR使用这两个对象来管理对象实例。
2.1一个是指向该类型方法表的指针。
2.2一个是用于线程同步控制和垃圾收集的SyncBlockIndex。
3。传入new操作符中指定的参数,调用类型的实例构造函数。
8.c#中类型的声明是给某个匿名的未知的类的对象建立类型的所需内存,而内存中只是声明了这个类型的成员,包括内部成员的所需内存和方法的链接,而没有对其进行实例化;所以这个过程只是在栈内存中存储所需的成员名(成员只是声明没有实体,功能是确定成员内存大小以供引用)和方法链接,用new 的话才是在堆上开空间,创对象,调用构造函数。
4.变量名没有实际的内存分配,只是指定查询变量的路径,路径原则与文件夹路径相似。
5.计算机程序语言中的变量名实质上就是代表一个内存地址的名称(别名)。
6.函数内的局部变量作用域只限于此函数本身,主调函数中的变量不会对被调函数中的局部变量产生影响,只有被调函数的函数形参会受主调函数的影响。;局部变量和全局变量命名相同时函数中的局部变量会将全局变量覆盖,局部变量有效。;函数定义阶段最外部的变量作用域大,(类似于局部变量中的全局变量,影响里面的代码变量结构等);
7.函数的调用实质上是从代码段搜寻函数地址调用,而函数的形参和局部变量存储在栈中,堆中则存放一些指针所指向的对象,new产生的类,数组等。
转载地址:http://pilws.baihongyu.com/