C++ 类对象和 指针的区别

C++ 类对象和 指针的区别

转自:http://blog.csdn.net/ym19860303/article/details/8557746

指针的情况

  1. class Test{
  2. public:
  3. int a;
  4. Test(){
  5. a = ;
  6. }
  7. };
  8.  
  9. int main()
  10. {
  11. Test* t1 = new Test();
  12. t1->a = ;
  13.  
  14. Test* t2 = new Test();
  15. t2->a = ;
  16.  
  17. cout << "&t1:" << t1 << " a = " << t1->a << endl;
  18. cout << "&t2:" << t2 << " a = " << t2->a <<endl;
  19.  
  20. cout << "------------------------------" << endl;
  21. t2 = t1;
  22. cout << "&t1:" << t1 << " a = " << t1->a << endl;
  23. cout << "&t2:" << t2 << " a = " << t2->a <<endl;
  24.  
  25. cout << "------------------------------" << endl;
  26.  
  27. t1->a = ;
  28. t2->a = ;
  29. cout << "&t1:" << t1 << " a = " << t1->a << endl;
  30. cout << "&t2:" << t2 << " a = " << t2->a <<endl;
  31.  
  32. return ;
  33. }

对象的情况:

  1. class Test{
  2. public:
  3. int a;
  4. Test(){
  5. a = ;
  6. }
  7. };
  8. int main()
  9. {
  10. Test t1;
  11. t1.a = ;
  12.  
  13. Test t2;
  14. t2.a = ;
  15.  
  16. cout << "&t1:" << &t1 << " a = " << t1.a << endl;
  17. cout << "&t2:" << &t2 << " a = " << t2.a <<endl;
  18.  
  19. cout << "------------------------------" << endl;
  20. t2 = t1;
  21. cout << "&t1:" << &t1 << " a = " << t1.a << endl;
  22. cout << "&t2:" << &t2 << " a = " << t2.a <<endl;
  23.  
  24. cout << "------------------------------" << endl;
  25.  
  26. t1.a = ;
  27. t2.a = ;
  28. cout << "&t1:" << &t1 << " a = " << t1.a << endl;
  29. cout << "&t2:" << &t2 << " a = " << t2.a <<endl;
  30.  
  31. return ;
  32. }

类的对象和类的指针的区别

转自:http://blog.csdn.net/neuqbingoye/article/details/7184090

  1. class Student {
  2. public:
  3. static int number;
  4. string name;
  5.  
  6. public:
  7. Student() { }
  8.  
  9. void print() // 态成员函数 print()
  10. {
  11. std::cout < < name < <" : The number of the students is " < < number < < " numbers." < < std::endl; // 调用静态数据成员
  12. }
  13. };

类对象:Student s1      类指针:Student *s2

很关键的一点:定义对象实例时,分配了内存,指针变量则未分配类对象所需内存。

类的指针:他是一个内存地址值,他指向内存中存放的类对象(包括一些成员变量所赋的值).   
对象,他是利用类的构造函数在内存中分配一块内存(包括一些成员变量所赋的值).

指针变量是间接访问,但可实现多态(通过父类指针可调用子类对象),并且没有调用构造函数。 
直接声明可直接访问,但不能实现多态,声明即调用了构造函数(已分配了内存)。

类的对象:用的是内存栈,是个局部的临时变量.   
类的指针:用的是内存堆,是个永久变量,除非你释放它.

1.在类的声明尚未完成的情况下,可以声明指向该类的指针,但是不可声明该类的对象... 例如:含有纯虚成员函数的抽象类。
2.父类的指针可以指向子类的对象..

在应用时:   
        1.引用成员:   对象用"   .   "操作符;   指针用"   ->   "操作符.   
        2.生命期:     若是成员变量,则是类的析构函数来释放空间;若是函数中的临时变量,则作用域是该函数体内.而指针,则需利用delete   在相应的地方释放分配的内存块.   
        注意:用new   ,一定要delete..

C++的精髓之一就是多态性,只有指针或者引用可以达到多态。对象不行
类指针的优点: 
第一实现多态。 
第二,在函数调用,传指针参数。不管你的对象或结构参数多么庞大,你用指针,传过去的就是4个字节。如果用对象,参数传递占用的资源就太大了

类对象和类指针的区别

转自:http://blog.sina.com.cn/s/blog_73e0563201017c8u.html

此文章比较全面的总结了类对象和类指针使用的不同

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. class Student
  6. {
  7. public:
  8. static int number;
  9. string name;
  10.  
  11. public:
  12. Student() { }
  13.  
  14. void set(string str)
  15. {
  16. name = str;
  17. number++; // 调用静态数据成员
  18. }
  19.  
  20. void print() // 态成员函数 print()
  21. {
  22. std::cout < < name < <" : The number of the students is " < < number < < " numbers." < < std::endl; // 调用静态数据成员
  23. }
  24. };
  25.  
  26. int Student::number = ; // 静态数据成员初始化
  27.  
  28. int main(int argc, char** argv)
  29. {
  30. Student* s1;
  31. s1 = new Student();
  32. s1->set("");
  33.  
  34. Student s2;
  35. s2.set("");
  36.  
  37. s1->print();
  38. s2.print();
  39.  
  40. return ;
  41. }

对于类student ,定义了一个对象 和一个指针。

类的指针:他是一个内存地址值,他指向内存中存放的类对象(包括一些成员变量所赋的值).   
对象,他是利用类的构造函数在内存中分配一块内存(包括一些成员变量所赋的值).   
          在应用时:   
        1.引用成员:   对象用"   .   "操作符;   指针用"   ->   "操作符.   
        2.生命期:     若是成员变量,则是类的析构函数来释放空间;若是函数中的临时变量,则作用域是该函数体内.而指针,则需利用delete   在相应的地方释放分配的内存块.   
注意:用new   ,一定要delete..

类的对象:用的是内存栈,是个局部的临时变量.   
类的指针:用的是内存堆,是个永久变量,除非你释放它.   
    
当类是有虚函数的基类,Func是它的一个虚函数,则调用Func时:   
类的对象:调用的是它自己的Func;   
类的指针:调用的是分配给它空间时那种类的Func;

对于一个类的对象和这个类的指针(用new运算符分配内存)在应用时有何区别   
1.类和对象是两回事,对象是类的实例;   
2.对象是在栈中分配的,使用new生成的对象是在堆中分配的;   
3.要发挥虚函数的强大作用,必须使用指针来访问对象.

指针可以实现多态,直接用对象不行 
执行定义对象,在栈空间 
new的在堆

类型决定了你能做什么.

其实作用基本一样 都是为了调用类的成员变量 和成员函数用的 
当你希望明确使用这个类的时候,最好使用对象,如果你希望使用C++中的动态绑定,则最好使用指针或者引用 
指针和引用用起来更灵活,容易实现多态等

1.在类的声明尚未完成的情况下,可以声明指向该类的指针,但是不可声明该类的对象... 
2.父类的指针可以指向子类的对象..

定义对象实例时,分配了内存。指针变量则未分配类对象所需内存,除非new了

指针变量是间接访问,但可实现多态(通过父类指针可调用子类对象),并且没有调用构造函数。 
直接声明可直接访问,但不能实现多态,声明即调用了构造函数(已分配了内存)。 
至于那个效率高要看程序调用过程而定。

C++的精髓之一就是多态性,只有指针或者引用可以达到多态。对象不行

用指针: 
第一实现多态。 
第二,在函数调用,传指针参数。不管你的对象或结构参数多么庞大,你用指针,传过去的就是4个字节。如果用对象,参数传递占用的资源就太大了

C++类和对象

转自:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287381.html

C++类就是为程序员提供一种建立一个新类型的工具,使这些新类型的使用能够像内部类型一样方便。

一个类就是一个用户定义的类型,如何声明一个类,形式如下:

  1. class class_name {
  2. access_specifier_1:
  3. member1;
  4. access_specifier_2:
  5. member2;
  6. ...
  7. } object_names;

示例如下:

  1. class Object {
  2. public:
  3. Object();
  4. ~Object(); //must be public
  5. Object(int num);
  6. int getNumber();
  7. void setNumber(int num);
  8.  
  9. private:
  10. int m_num;
  11. };

如何定义一个已声明的类:

  1. Object::Object() {
  2. m_num = ;
  3. }
  4. Object::~Object() {
  5.  
  6. }
  7. Object::Object(int num) {
  8. m_num = num;
  9. }
  10.  
  11. int Object::getNumber() {
  12. return m_num;
  13. }
  14.  
  15. void Object::setNumber(int num) {
  16. m_num = num;
  17. }

如何实例化和使用一个类:

  1. int main () {
  2. Object obj1;
  3. Object obj2();
  4. Object obj3 = Object();
  5. Object *pObj4 = new Object();
  6. Object *pObj5 = new Object();
  7. Object objs[];
  8. printf("obj1.getNumber() = %d\n", obj1.getNumber());
  9. printf("obj2.getNumber() = %d\n", obj2.getNumber());
  10. printf("obj3.getNumber() = %d\n", obj3.getNumber());
  11. printf("pObj4->getNumber() = %d\n", pObj4->getNumber());
  12. printf("pObj5->getNumber() = %d\n", pObj5->getNumber());
  13. for (int i = ; i < ; i++) {
  14. printf("objs[%d].getNumber() = %d\n",i, objs[i].getNumber());
  15. }
  16. delete pObj4;
  17. delete pObj5;
  18. return ;
  19. }

struct 和union的类声明

类可以定义不仅可以用关键字class,也可以用关键字struct和union。

class和struct的概念是相似的,可用struct和class声明C++的类(即struct可以有数据成员和函数成员)。两者之间唯一的区别是使用关键字struct声明的类成员默认情况下,是public访问权限,而使用关键字class声明的类成员默认是private访问权限。对于所有其他的目的,这两个关键字是等价的。

union的概念是与struct和class声明类不同的,因为union一次只能存储一个数据成员,但union也可能拥有函数成员,union类的默认访问权限是public。

C++新特性(类与对象的各种指针和引用)

转自:http://blog.csdn.net/pearl333/article/details/8027358

对象与函数的关系(知道如何把对象指针和引用作为函数参数)

将对象指针作为函数的参数,传递给函数处理有两个好处

1、减少数据分配的时间和空间,提高了程序运行的效率;

2、在被调函数中,可以直接改变实参对象的值,实现函数之间的信息交换。

通过一个例子感受 对象指针作为函数的参数

  1. #include <iostream>
  2. using namespace std;
  3. class CPoint{
  4. public :
  5. CPoint(int x,int y);
  6. void copy(CPoint *point); //在成员函数中,参数是对象指针
  7. void setXY(int x,int y);
  8. void disp();
  9. private:
  10. int m_x; //数据成员
  11. int m_y;
  12. };
  13. CPoint::CPoint(int x,int y) //带参数的构造函数
  14. {
  15. m_x=x;
  16. m_y=y;
  17. }
  18. void CPoint::copy(CPoint *point)
  19. {
  20. m_x=point->m_x; //通过对象指针访问该对象的数据成员,赋值
  21. m_y=point->m_y; //给调用成员函数的对象的数据成员
  22. }
  23. void CPoint::disp(){
  24. cout<<"x="<<m_x<<";y="<<m_y<<endl;
  25. }
  26. void CPoint::setXY(int x,int y){
  27. m_x=x;
  28. m_y=y;
  29. }
  30. void func(CPoint *p){ //函数的参数是对象指针,通过指针调用对象的成员函数
  31. p->setXY(,);
  32. }
  33. int main()
  34. {
  35. CPoint p1(,),p2(,);
  36. p1.copy(&p2); //把对象p2的地址赋值给对象指针
  37. p1.disp();
  38. func(&p2); //把对象p2的地址赋值给对象指针
  39. p2.disp();
  40. return ;
  41. }

对象引用作为函数参数:比把对象指针作为函数参数更为普遍,因为使用对象引用作为函数参数不仅具有对象指针的优点,而且使用对象引用更为直观和简单。所以在C++中普遍采用对象引用作为函数参数,看例子,注意对比上面的程序:

  1. #include <iostream>
  2. using namespace std;
  3. class CPoint{
  4. public :
  5. CPoint(int x,int y);
  6. void copy(CPoint &point); //在成员函数中,参数是对象指针
  7. void setXY(int x,int y);
  8. void disp();
  9. private:
  10. int m_x; //数据成员
  11. int m_y;
  12. };
  13. CPoint::CPoint(int x,int y) //带参数的构造函数
  14. {
  15. m_x=x;
  16. m_y=y;
  17. }
  18. void CPoint::copy(CPoint &point) //函数的参数是对象引用
  19. {
  20. m_x=point.m_x; //通过对象引用访问该对象数据成员,赋值给调用成员函数的对象的数据成员
  21. m_y=point.m_y;
  22. }
  23. void CPoint::disp(){
  24. cout<<"x="<<m_x<<";y="<<m_y<<endl;
  25. }
  26. void CPoint::setXY(int x,int y){
  27. m_x=x;
  28. m_y=y;
  29. }
  30. void func(CPoint &p){ //在一般函数中,参数是对象引用,通过对象引用调用成员函数
  31. p.setXY(,);
  32. }
  33. int main()
  34. {
  35. CPoint p1(,),p2(,);
  36. p1.copy(p2); //把对象p2的地址赋值给对象引用
  37. p1.disp();
  38. func(p2); //把对象p2的地址赋值给对象引用
  39. p2.disp();
  40. return ;
  41. }

对象数组(一串连续的对象)

举一个例子来感受对象数组的声明,初始化,和使用:

  1. #include <iostream>
  2. #include<string.h>
  3. using namespace std;
  4. class CStudent{
  5. public:
  6. CStudent(char *name,int age,int score);//构造函数
  7. void disp();
  8. private:
  9. char m_name[]; //数据成员
  10. int m_age;
  11. int m_score;
  12. };
  13. CStudent::CStudent(char *name,int age,int score){ //构造函数的实现
  14. strcpy(m_name,name);
  15. m_age=age;
  16. m_score=score;
  17. }
  18. void CStudent::disp() //显示构造函数
  19. {
  20. cout<<"name:"<<m_name<<";age:"<<m_age<<";score:"<<m_score<<endl;
  21. }
  22. int main()
  23. {
  24. CStudent csArray[]={CStudent("srf",,),CStudent("dp",,),
  25. CStudent("aa",,),CStudent("bb",,)};
  26. for(int i=;i<;i++)
  27. {
  28. csArray[i].disp(); //对象数组中的对象调用其成员函数
  29. }
  30. return ;
  31. }

子对象和堆对象的声明和使用

一个类中的成员是另一个类的对象时,称这个对象是子对象。换句话说,子对象就是类的对象成员。例如下面的橘子类(COrange)和苹果类(CApple):

  1. class COrange
  2. {
  3. public:
  4. COrange();
  5. private:
  6. ...
  7. };
  8. class CApple
  9. {
  10. public:
  11. CApple();
  12. private:
  13. COrange orange; //橘子类的子对象
  14. };

CApple的成员orange是类COrange的对象,所以orange为子对象。当一个类中包含子对象时,这个类的构造函数中应该包含对该子对象的初始化后。并且只能采用成员初始化表的方法来初始化该子对象。通过例子感受:

包含对象成员的类应用。

  1. #include <iostream>
  2. #include<string.h>
  3. using namespace std;
  4. class COrange
  5. {
  6. public:
  7. COrange(int heft,int sweet);
  8. void disp();
  9. private:
  10. int m_heft;
  11. int m_sweet;
  12. };
  13. COrange::COrange(int heft,int sweet)
  14. {
  15. m_heft=heft;
  16. m_sweet=sweet;
  17. }
  18. void COrange::disp()
  19. {
  20. cout<<m_heft<<";"<<m_sweet<<endl;
  21. }
  22. class CApple
  23. {
  24. public:
  25. CApple(int heft,int sweet,int fragrant);
  26. void disp();
  27. private:
  28. COrange orange; //声明COrange类的子对象orange
  29. int m_fragrant; //数据成员--香味
  30. };
  31. CApple::CApple(int heft,int sweet,int fragrant):orange(heft,sweet)
  32. { //用成员初始化列表的方式初始化子对象,格式为:子对象名(参数表)
  33. m_fragrant=fragrant;
  34. }
  35. void CApple::disp(){
  36. orange.disp();
  37. cout<<m_fragrant<<endl;
  38. }
  39. int main()
  40. {
  41. CApple apple(,,); //定义CApple类的对象apple
  42. apple.disp();
  43. return ;
  44. }

堆对象:用类定义的对象有一种特殊的对象,可以在程序运行时,随时创建和删除,满足实时的程序要求,这种对象称为堆对象。

因为这种对象的内存空间是创建在堆内存中,所以可以像堆空间一样随时申请和释放,其操作符也是new和delete。

创建格式为:new 类名(参数名);

如:

  1. CTest *p=NULL; //定义一个对象指针
  2. p=new CTest(); //创建一个堆对象,并赋值给对象指针p

也可以创建堆对象数组

  1. CTest *pa=NULL;
  2. pa = new CTest[];

删除时:

  1. delete p; //p是一个指向new创建的堆对象的对象指针
  2. delete [] pa; //pa是一个指向new创建的堆对象数组的对象指针

通过一个例子来感受对对象的创建,删除和使用。

  1. #include <iostream>
  2. #include<string.h>
  3. using namespace std;
  4. class CHeap
  5. {
  6. public:
  7. CHeap();
  8. CHeap(int a,int b);
  9. ~CHeap();
  10. void disp();
  11. private:
  12. int m_a,m_b;
  13. };
  14. CHeap::CHeap()
  15. {
  16. m_a=;
  17. m_b=;
  18. cout<<"调用默认的构造函数"<<endl;
  19. }
  20. CHeap::CHeap(int a,int b)
  21. {
  22. m_a=a;
  23. m_b=b;
  24. cout<<"调用带参数的构造函数"<<endl;
  25. }
  26. CHeap::~CHeap()
  27. {
  28. cout<<"调用析构函数"<<endl;
  29. }
  30. void CHeap::disp()
  31. {
  32. cout<<"m_a="<<m_a<<";m_b="<<m_b<<endl;
  33. }
  34. int main()
  35. {
  36. CHeap *pheap;
  37. pheap=new CHeap(); //创建堆对象,并把地址赋值给pheap
  38. if(pheap) //判断是否创建成功
  39. {
  40. pheap->disp(); //通过对象指针,调用堆对象的成员函数
  41. delete pheap; //删除堆对象
  42. }
  43. pheap = new CHeap(,); //把对象指针指向新的堆对象,使用参数构造。
  44. if(pheap)
  45. {
  46. pheap->disp();
  47. delete pheap;
  48. }
  49.  
  50. return ;
  51. }

堆对象如果创建失败,new返回是NULL值,即空指针,所以使用前必须进行判断,如果创建成功,则在最后不使用时,应当删除这个堆对象,并释放其占用的堆内存空间。

堆对象数组的创建,删除,和使用,只看主函数部分的修改:

  1. int main()
  2. {
  3. CHeap *pheap;
  4. pheap=new CHeap[]; //把对象指针指向堆对象数组的首元素
  5. if(pheap) //判断是否创建成功
  6. {
  7. for(int i=;i<;i++)
  8. {
  9. (pheap+i)->disp(); //调用对象数组中对象元素的成员函数 使用对象指针加增量来访问对象数组中的每个对象元素
  10. }
  11. delete []pheap; //删除堆对象数组
  12. }
  13.  
  14. return ;
  15. }

解析C++普通局部变量与指针类型的对象变量的应用区别

转自:http://www.cnblogs.com/hellope/archive/2011/08/03/2126371.html

首先我们先来了解一下MFC中的CPtrArray类,他可以说是CObject类型指针对象的集合。通过int Add(CObject* newElement );注意参数是一个指针类型)可以向集合中添加元素。首先我们定义一个CPtrArray类型的对象。

  1. CPtrArray pArray;//他是一个全局对象

先设定一个举例的类类型。如:

  1. class A
  2. {
  3. public:
  4. A(int i)
  5. {
  6. a = i;
  7. }
  8. ~A(){}
  9. public:
  10. int a;
  11. };

现在我们需要在某个函数中要实现将一个A类型对象数据加入到一个CPtrArray对象中。此函数func1()如下:

  1. void func1()
  2. {
  3. //首先定义一个A类型的对象
  4. A a();
  5. //使用pArray对象中的成员函数将此对象加入到容器中
  6. pArray.Add(&a);
  7. }

在另一个函数中我们使用pArray容器为我们保存的数据:

  1. void func2()
  2. {
  3. //首先声明一个A类型的对象
  4. A* a;
  5. //使用pArray对象中的成员函数GetAt()将A类型的对象取出
  6. for(int i; i < pArray.GetSize();i++)
  7. {
  8. a = (A*)pArray.GetAt(i);
  9. //使用A中的数据进行相关的操作代码。***此时也可以使用delete释放指针指向的内存区块,防止内存泄露***当然是后面一种方法时才用到,暂时无视之。
  10. ...
  11. }
  12.  
  13. }

现在我们发现按照上面的过程,当我们在func2()函数中将要使用pArray容器对象为我们保存的数据时,我们并不能得到想要的数据!!!为什么发生以上情况?图解如下

pArray保存a保存资源的地址;

func1函数执行完成,a发生析构,资源不可用;

原来在func1()函数中,a对象是一个局部对象,当我们使用pArray.Add(&a);我们将a对象的地址保存到pArray对象中。但是作为局部对象,当func1

执行完成后,资源需要回收,此时我们定义的a对象也在A类中的析构函数中被析构释放资源!而当我们在fun2()函数中执行取出保存的对象时,

实际是根据保存的地址去内存中找到数据,虽然此时我们能能够找到此地址,但是这个地址上面的数据并不是我们需要的了!!!所以才发生面的情况!

那么怎么才能解决呢?

看下面,我们只需更改func1函数中的代码:

  1. void func1()
  2. {
  3. //首先定义一个A类型的对象
  4. //A a(1);//为对比,只是注释原来那句
  5. A* a = new A();
  6. //使用pArray对象中的成员函数将此对象加入到容器中
  7. pArray.Add(a);
  8. }

这样,我们就能够在func2函数中使用pArray对象中包含的数据了!那么为什么定义了一个指针类型的对象就能够完成了呢?还是一个局部对象呀,

前面说的func1函数执行完成后此对象还是要经历析构的啊!图解如下:

pArray中保存a指向资源的地址;

func1函数执行完成,a对象发生析构,pArray根据地址还能能够访问到之前的资源;

对,是要析构,但是,我们在pArray.Add(a);中加入的是a对象资源的地址,我们先看看A* a = new A(1);在堆中分配资源,我们知道,在堆中分配的资

源是在跟程序的生命周期是一致的。a对象虽然析构了(不存在了),因为a也是一个指针,a指针也就是保存这个资源的地址!我们在pArray中保存

的a的地址出的资源并没有析构!所以在func2函数中我们还能够使用此地址访问此地址对应的资源!

C++ 类对象和 指针的区别的更多相关文章

  1. <一>类,对象,this指针

    C++ 类:实体的抽象类型 实体(属性,行为) ->ADT(abstract data type) 类(属性->成员变量,行为->成员方法) OOP语言4大特征 抽象 封装/隐藏(通 ...

  2. class中new与未new的区别 类对象占用空间--转载

    转载自http://blog.sina.com.cn/shuiwuhendeboke    颗颗的博客 (1)作用域不同 不用new:作用域限制在定义类对象的方法中,当方法结束时,类对象也被系统释放了 ...

  3. C++用new和不用new创建类对象区别

    new创建类对象,使用完后需使用delete删除,跟申请内存类似.所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更 ...

  4. C++中怎么创建类对象

    在C++里,有两种方法创建对象:方法一:ClassName object(param);这样就声明了一个ClassName类型的object对象,C++会为它分配足够的存放对象所有成员的存储空间.注意 ...

  5. 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

    [源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, con ...

  6. C++:基类与派生类对象之间的赋值兼容关系

    4.5 基类与派生类对象之间的赋值兼容关系 在一定条件下,不同类型的数据之间可以进行类型转换,例如可以将整型数据赋给双精度型变量. 在赋值之前,先把整型数据转换为双精度型数据,然后再把它双精度型变量. ...

  7. C++@类对象和类指针的区别(转)

    原文地址不详 如下程序: #include <iostream> #include <string> using namespace std; class Student { ...

  8. C++类的对象和类的指针的区别

    #include <iostream> #include <string> using namespace std; class Student { public: stati ...

  9. 指向自身类型的成员指针的初始化,this不属于类对象的一部分

    有下面的一个简单的类: class CNullPointCall{public:    static void Test1();    void Test2();    void Test3(int  ...

随机推荐

  1. C++指针参数引用

    粘个代码占位置,以后有时间把指针函数,函数指针都补上 #include <iostream> using namespace std; void freePtr1(int* p1){ /* ...

  2. 面向对象Part4

    ---------------------------------------------------------------------------------------------------- ...

  3. U3D学习笔记1: HelloWorld

    Unity 版本: 5.3.5.f1 Hello World工程 1.新建工程 HelloWorld U3D可选2D和3D游戏   2.新建C#脚本文件 在project栏的assets目录右键-&g ...

  4. java类加载器加载文件

    例子:采用配置文件加反射的方式创建ArrayList和HashSet的实例对象. //第一种方式:类加载器加载文件 InputStream ips = ReflectTest2.class.getCl ...

  5. 关于C3翘边阴影的demo

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  6. axure rp8.0 序列号,亲测可以用

    转载自:https://zhidao.baidu.com/question/428326076480233092.html aaa 2GQrt5XHYY7SBK/4b22Gm4Dh8alaR0/0k3 ...

  7. IE11兼容性问题修改

    最近测试给了我一大堆BUG,一瞅发现全是IE11的.吐槽一下这个浏览器真的比较特立独行.很多默认的样式跟别的浏览器不同,而且最明显的一点应该是padding左右内边距往往比别的浏览器大了一倍.但是当需 ...

  8. LocalDB连接失败

    最近项目尝试放弃sqlexpress2005使用LocalDb2014,遇到问题: LocalDB安装成功,能正常添加实例,但同一个winform程序 在不同的win7电脑上有的能连上,有的怎么也连接 ...

  9. 【转】Linux makefile 教程 非常详细,且易懂

    From: http://blog.csdn.net/liang13664759/article/details/1771246 最近在学习Linux下的C编程,买了一本叫<Linux环境下的C ...

  10. MysqlNDB集群配置

    为了避免不必要的资源分配,默认情况下是不启动ndbcluster引擎.